commonJS — 数组操作(for Array)
for Array
github: https://github.com/laixiangran/commonJS/blob/master/src/forArray.js
代码
/**
* Created by laixiangran on 2016/1/24
* homepage:http://www.cnblogs.com/laixiangran/
* for Array
*/
(function(undefined) {
var com = window.COM = window.COM || {};
com.$A = (function() {
var ret = {
isArray: function(obj) {
if (Array.isArray) {
return Array.isArray(obj);
} else {
return Object.prototype.toString.call(obj) === "[object Array]";
}
},
indexOf: function(array, item, from) {
if (array.indexOf) {
return isNaN(from) ? array.indexOf(item) : array.indexOf(item, from);
} else {
var len = array.length;
from = isNaN(from) ? 0 :
from < 0 ? Math.ceil(from) + len : Math.floor(from);
for (; from < len; from++ ) {
if ( array[from] === item ) {
return from;
}
}
return -1;
}
},
lastIndexOf: function(array, item, from) {
if (array.lastIndexOf) {
return isNaN(from) ? array.lastIndexOf(item) : array.lastIndexOf(item, from);
} else {
var len = array.length;
from = isNaN(from) || from >= len - 1 ? len - 1 :
from < 0 ? Math.ceil(from) + len : Math.floor(from);
for (; from > -1; from-- ) {
if ( array[from] === item ) {
return from;
}
}
return -1;
}
}
};
function each(object, callback) {
if (undefined === object.length) {
for (var name in object) {
if (object.hasOwnProperty(name)) {
if (false === callback(object[name], name, object)) {
break;
}
}
}
} else {
for (var i = 0, len = object.length; i < len; i++) {
if (i in object) {
if (false === callback(object[i], i, object)) {
break;
}
}
}
}
}
each({
forEach: function(object, callback, thisp) {
each(object, function() {
callback.apply(thisp, arguments);
});
},
map: function(object, callback, thisp) {
var arr = [];
each(object, function() {
arr.push(callback.apply(thisp, arguments));
});
return arr;
},
filter: function(object, callback, thisp) {
var arr = [];
each(object, function(item) {
callback.apply(thisp, arguments) && arr.push(item);
});
return arr;
},
every: function(object, callback, thisp) {
var flag = true;
each(object, function() {
if (!callback.apply(thisp, arguments)) {
flag = false;
return false;
}
});
return flag;
},
some: function(object, callback, thisp) {
var flag = false;
each(object, function() {
if (callback.apply(thisp, arguments)) {
flag = true;
return false;
}
});
return flag;
}
}, function(method, name) {
ret[name] = function(object, callback, thisp) {
if (object[name]) {
return object[name](callback, thisp);
} else {
return method(object, callback, thisp);
}
}
});
return ret;
}());
}());
参考
commonJS — 数组操作(for Array)的更多相关文章
- Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组
在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数 ...
- Scala 数组操作之Array、ArrayBuffer以及遍历数组
ArrayBuffer 在Scala中,如果需要类似于Java中的ArrayList这种长度可变的集合类,则可以使用ArrayBuffer. // 如果不想每次都使用全限定名,则可以预先导入Array ...
- 加速数组操作(Array)
Measure-Command { $ar = @() for ($x=0; $x -lt 10000; $x++) { $ar += $x } }执行结果:3.301s Measure-Comman ...
- 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中
写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- JavaScript jQuery 中定义数组与操作及jquery数组操作
首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...
- php数组操作集锦- 掌握了数组操作, 也就掌握了php
参考下面的文章, 是很好的: http://www.cnblogs.com/staven/p/5142515.html http://pcwanli.blog.163.com/blog/static/ ...
- JavaScript 数组操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- JavaScript中数组操作常用方法
JavaScript中数组操作常用方法 1.检测数组 1)检测对象是否为数组,使用instanceof 操作符 if(value instanceof Array) { //对数组执行某些操作 } 2 ...
随机推荐
- 2016CCPC东北地区大学生程序设计竞赛 1001 HDU5922
链接http://acm.hdu.edu.cn/showproblem.php?pid=5922 题意:最小生成树,但边的权值是连接两点的最小公倍数 解法:不要真的写最小生成树啦,只要其他点和第一点相 ...
- Mysql-学习笔记(==》触发器 十一)
-------触发器-------- USE db;SELECT FROM sss; CREATE TABLE sssbak LIKE sss;SHOW CREATE TABLE sss;SHOW C ...
- 2016年10月30日 星期日 --出埃及记 Exodus 19:15
2016年10月30日 星期日 --出埃及记 Exodus 19:15 Then he said to the people, "Prepare yourselves for the thi ...
- AB串(上帝都不会,我就没救了)
[题目分析] 设答案的长度为m,
- SqlSever基础 substring 从指定位置开始,截取指定长度的字符串
镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...
- Spring 框架 详解 (三)-----IOC装配Bean
IOC装配Bean: 1.1.1 Spring框架Bean实例化的方式: 提供了三种方式实例化Bean. * 构造方法实例化:(默认无参数) * 静态工厂实例化: * 实例工厂实例化: 无参数构造方法 ...
- HTTP和FTP的区别
原文地址: http://blog.csdn.net/xiaoxiangzhu660810/article/details/8291656 一.字面上来看 HTTP是Hyper Text Tr ...
- CentOS 7 (无盘安装)PXE服务器的搭建(失败求助版)
折腾了一天半,PXE无盘服务器以暂时失败而告终. 基本原理 1. 首先客户端主机需要支持PXE,大部分主板都支持. 2. PXE服务器需要安装DHCP.TFTP.FTP服务. 3. DHCP服务用来给 ...
- Qt根据汉字生成位图,可连续调用,生成的位图不会有杂点
void MainWindow::drawText(int font_size, QString str, int n){ QPainter p; QSize size(460, font_size) ...
- Mybatis+struts2+spring整合
把student项目改造成ssm struts2 +mybatis+spring 1,先添加spring支持:类库三个,applicationContext.xml写在webinf下四个命名空间,监 ...