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 ...
随机推荐
- Codeforces Round #373 (Div. 2) A
Description Every summer Vitya comes to visit his grandmother in the countryside. This summer, he go ...
- flask安装
Flask简介 Flask算是小型框架,自开发伊始就被设计为可扩展的框架,它具有一个包含基本服务的强健核心.Flask有两个依赖:路由.调试.和web服务器网关接口(Web Server Gatewa ...
- 2016年6月24日 星期五 --出埃及记 Exodus 14:21
2016年6月24日 星期五 --出埃及记 Exodus 14:21 Then Moses stretched out his hand over the sea, and all that nigh ...
- PKCS10生成证书csr
public static String genCSR(String subject, String alg,String provider) throws InvalidKeyException, ...
- ecshop商品分类页获取相册列表方法
第1步:找到根目录的category.php文件,查找约:486行左右(注意这不是准确位置,看实际的哦),找到这个函数: /** * 获得分类下的商品 * * @access public * @pa ...
- sh和bash的区别
在鸟哥的私房菜的一书中,介绍了UNIX的版本以及众多的SHELL版本. 早在UNIX年代,发展者众多,所以由于shell依据发展者的不同就有许多版本,比如sh,C SHell,K SHell,还有TC ...
- SpringMVC拦截器2(资源和权限管理)(作为补充说明)
SpringMVC拦截器(资源和权限管理) 1.DispatcherServlet SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServle ...
- 循环,range,continue 和 break
1.for循环 用户按照顺序循环可迭代对象中的内容, PS:break.continue li = [11,22,33,44] for item in li: print item 2.enu ...
- Android 获取存储空间
package com.example.getMem; import java.io.File; import android.os.Build;import android.os.Bundle;im ...
- 解决 Eclipse 重写方法时参数为arg0,arg1
我们在用eclipse 中Alt+ / 补全代码时.方法重写会出现arg0这样可读性差的参数. 原因是没有找到android 的源文件. 一.下载文件 需要下载 sources for android ...