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 ...
随机推荐
- 放松时刻——C#分割字符串
让我们来练习一下字符串的分割~把话倒过来说: private void change_button_Click(object sender, EventArgs e) { var after_text ...
- iis 没目录文件
方法一: <system.webServer> <directoryBrowse enabled="true"/> </system.webServe ...
- django cycle标签
django 模板系统 有很多标签,其中cycle我觉得不好理解,至少网上文档也不好理解. 这些标签可以通过渲染模板文件而获得我们预期的效果和文字,常用的有如下这些标签: 标签:{% 标签名 %}{% ...
- Jquery实现图片上下一张
注:调试的时候发现ff下有兼容性问题,把jquery换成4.4版本就没问题了,问题应该在e.offseX上ff不支持此属性,以图片中间宽度为界限,鼠标移动在左边点击跳转到一个链接,鼠标移动右边点击跳转 ...
- Git笔记 整理2
补充: 1,如何只克隆git仓库中的一个分支? git clone -b <branch> <remote_repo> eg: git clone -b vivien_dev ...
- 【leetcode❤python】 374. Guess Number Higher or Lower
#-*- coding: UTF-8 -*-# The guess API is already defined for you.# @param num, your guess# @return - ...
- 目前比较全的CSS重设(reset)方法总结
在当今网页设计/开发实践中,使用CSS来为语义化的(X)HTML标记添加样式风格是 重要的关键.在设计师们的梦想中都存在着这样的一个完美世界:所有的浏览器都能够理解和适用多有CSS规则,并且呈现相同的 ...
- Beaglebone Black–智能家居控制系统 LAS - 用 UART 连接 ESP8266 (ESP-01 版)
这是一块便宜 (¥12.5)的 WiFi 模块,3.3V ,芯片是乐鑫科技(Espressif)出品.它本身是很多玩法,比如这个 NodeMCU (淘宝有套件焊接好一整套的带 USB 接口的,搜 es ...
- 11.Events
1.A type that defines an event member allows the type (or instances of the type) to notify other obj ...
- MySQL多表更新(逻辑外键/事实外键)
语法结构: UPDATE table_reference SET 列名1=value1[,列名2=value2,......] [WHERE where_condition] 说明: tabl ...