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 ...
随机推荐
- tensor
初始化 z = torch.Tensor(,,,,) --可以创建多维数组.里面是随机的数. s = torch.Tensor(,):fill() --用1填充 t = torch.rand(,) m ...
- java面试中的智力题
智力题,每个正式的笔试.面试都会出,而且在面大企业的时候必然会问到,笔者曾在很多面试中,都被问到过,不过答得都不是很好,因为时间很短,加上我们有时候过于紧张,所以做出这类问题,还是有一定的难度,从这篇 ...
- Activity和Service的生命周期(图)
1.Activity的生命周期 情形一.一个单独的Activity的正常的生命过程是这样的:onCreate->onStart->onPause->onStop->onDest ...
- Mysql-学习笔记(==》约束 六)
-- 建立表的相关约束主键约束 PRIMARY KEY (主键自带索引 PK 关系数据库领域,要求一个表只有一个主键)CREATE TABLE t1( tid INT UNSIGNED NOT NUL ...
- 【leetcode❤python】226. Invert Binary Tree
#-*- coding: UTF-8 -*- # Definition for a binary tree node.# class TreeNode(object):# def __init ...
- 【leetcode❤python】13. Roman to Integer
#-*- coding: UTF-8 -*-#从前向后遍历罗马数字,#如果某个数比前一个数小,则加上该数.反之,减去前一个数的两倍然后加上该数###-----技术规则-----#----------- ...
- 字符串表达式String Expressions
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]DIALOG屏幕流逻辑
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- poj 2985 The k-th Largest Group 树状数组求第K大
The k-th Largest Group Time Limit: 2000MS Memory Limit: 131072K Total Submissions: 8353 Accepted ...
- 《Linux内核设计的艺术》学习笔记(一)从开机加电到加载三个汇编源码
实验内核版本:0.11 ◆ 从开机到main函数的三步: ① 启动BIOS,准备实模式下的中断向量表和中断服务程序: ② 从启动盘加载OS程序到内存中,加载OS程序的工作就是利用第一步中的中断服务 ...