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 ...
随机推荐
- 使用selenium来完成的例子
地址:http://www.tuicool.com/articles/rimeey
- randperm函数
randperm功能是随机打乱一个数字序列. 语法格式: y = torch.randperm(n) y是把1到n这些数随机打乱得到的一个数字序列. th> torch.randperm() [ ...
- java中|与||,&与&&到底有什么区别呢?
&是位运算符.&&是布尔逻辑运算符.在运行上,&两边的条件都要判断(不管前面的是ture还是false),而&&先判断前面的,若为false,则后面的不 ...
- Educational Codeforces Round 16 B
Description You are given n points on a line with their coordinates xi. Find the point x so the sum ...
- python学习笔记五 模块上(基础篇)
模块学习 模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要 ...
- php 修改、增加xml结点属性的实现代码
php修改xml结点属性,增加xml结点属性的代码,有需要的朋友可以参考下 php 修改 增加xml结点属性的代码,供大家学习参考.php修改xml结点属性,增加xml结点属性的代码,有需要的朋友,参 ...
- Linux常用性能检测命令解释
1.uptime [root@smgsim02 ~]# uptime 15:08:15 up 98 days, 4:19, 2 users, load average: 0.07, 0.29, 0.1 ...
- js css 构建滚动边框
注:预览效果请点击result选项卡,个人认为这种效果非常适合做友情链接. 完整代码 <!DOCTYPE html> <html xmlns="http://www.w3. ...
- C#之winform基础 button1_Click(object sender, EventArgs e)中sender是啥及其用法
镇场诗: 大梦谁觉,水月中建博客.百千磨难,才知世事无常. 今持佛语,技术无量愿学.愿尽所学,铸一良心博客.---------------------------- ...
- BZOJ 2324 营救皮卡丘(最小费用最大流)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2324 题意:n+1个城市(0到n).初始时K个 人都在0城市.城市之间有距离.要求(1) ...