JavaScript 5 新增 Array 方法实现介绍


Posted in Javascript onFebruary 06, 2012
/*! 
* jLip JavaScript Library v0.1 
* 
* Copyright 2012, Lip2up (lip2up@qq.com) 
* Just for free use, NO LICENSE 
*/ 
(function() { 
function extend(target, props) { 
for (var m in props) { 
if (target[m] === undefined) target[m] = props[m]; 
} 
} 
var fns = { every: 1, some: 2, forEach: 3, map: 4, filter: 5 }, 
reduceError = 'Reduce of empty array with no initial value'; 
function each(fn, _this, kind) { 
var len = this.length, ret = kind == fns.filter ? [] 
: kind == fns.map ? Array(len) : undefined, 
find = kind == fns.some, i, v; 
for (i = 0; i < len; i++) { 
if (this[i] !== undefined) { 
v = fn.call(_this, this[i], i, this); 
switch (kind) { 
case fns.every: 
case fns.some: 
if (v === find) return find; 
break; 
case fns.map: 
ret[i] = v; 
break; 
case fns.filter: 
if (v === true) ret[ret.length] = this[i]; 
break; 
} 
} 
} 
return kind >= fns.forEach ? ret : !find; 
} 
function reduce(fn, init, right) { 
var len = this.length, i, prev, inc = right ? -1 : 1; 
if (len == 0 && init === undefined) 
throw TypeError(reduceError); 
for (i = right ? len - 1 : 0, prev = init; 
prev === undefined && (right ? i >= 0 : i < len); 
i += inc) { 
prev = this[i]; 
} 
if (prev === undefined && i == (right ? -1 : len)) 
throw TypeError(reduceError); 
for (; (right ? i >= 0 : i < len); i += inc) { 
if (this[i] !== undefined) 
prev = fn(prev, this[i], i, this); 
} 
return prev; 
} 
extend(Array.prototype, { 
every: function(fn, _this) { 
return each.call(this, fn, _this, fns.every); 
}, 
some: function(fn, _this) { 
return each.call(this, fn, _this, fns.some); 
}, 
forEach: function(fn, _this) { 
return each.call(this, fn, _this, fns.forEach); 
}, 
map: function(fn, _this) { 
return each.call(this, fn, _this, fns.map); 
}, 
filter: function(fn, _this) { 
return each.call(this, fn, _this, fns.filter); 
}, 
reduce: function(fn, init) { 
return reduce.call(this, fn, init); 
}, 
reduceRight: function(fn, init) { 
return reduce.call(this, fn, init, true); 
} 
}); 
})();
Javascript 相关文章推荐
使用dynatrace-ajax跟踪JavaScript的性能
Apr 12 Javascript
Javascript 判断Flash是否加载完成的代码
Apr 12 Javascript
MC Dialog js弹出层 完美兼容多浏览器(5.6更新)
May 06 Javascript
Javascript 面向对象 继承
May 13 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
Nov 13 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
Jul 18 Javascript
网页收藏夹显示ICO图标(代码少)
Aug 04 Javascript
JS创建事件的三种方法(实例代码)
May 12 Javascript
JavaScript实现多栏目切换效果
Dec 12 Javascript
es6基础学习之解构赋值
Dec 10 Javascript
angular中如何绑定iframe中src的方法
Feb 01 Javascript
vue.js循环radio的实例
Nov 07 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
Feb 03 #Javascript
ASP.NET jQuery 实例17 通过使用jQuery validation插件校验ListBox
Feb 03 #Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
Feb 03 #Javascript
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
Feb 03 #Javascript
ASP.NET jQuery 实例14 在ASP.NET form中校验时间范围
Feb 03 #Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
Feb 03 #Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
Feb 03 #Javascript
You might like
php微信开发之上传临时素材
2016/06/24 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
基于php编程规范(详解)
2017/08/17 PHP
jquery提示效果实例分析
2014/11/25 Javascript
用AngularJS来实现监察表单按钮的禁用效果
2016/11/02 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
js判断是否是手机页面
2017/03/17 Javascript
Vue.js 2.x之组件的定义和注册图文详解
2018/06/19 Javascript
详解JS转换数值函数Number()、parseInt()、parseFloat()
2018/08/24 Javascript
详解基于原生JS验证表单组件xy-form
2019/08/20 Javascript
JavaScript 闭包的使用场景
2020/09/17 Javascript
记录Django开发心得
2014/07/16 Python
Python版微信红包分配算法
2015/05/04 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
2018/04/27 Python
django中media媒体路径设置的步骤
2019/11/15 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
2020/01/04 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
python中round函数如何使用
2020/06/19 Python
python 使用递归的方式实现语义图片分割功能
2020/07/16 Python
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
HTML5实现获取地理位置信息并定位功能
2015/04/25 HTML / CSS
Notino法国:购买香水和化妆品
2019/04/15 全球购物
英国鲜花递送:Blossoming Gifts
2020/07/10 全球购物
初入社会应届生求职信
2013/11/18 职场文书
优秀毕业生自我鉴定
2014/01/19 职场文书
老师对学生的寄语
2014/04/09 职场文书
体育运动口号
2014/06/09 职场文书
2015国庆节宣传语
2015/07/14 职场文书
2015教师节通讯稿
2015/07/20 职场文书
辞职离别感言
2015/08/04 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang
浅析Python实现DFA算法
2021/06/26 Python
MySQL8.0 Undo Tablespace管理详解
2022/06/16 MySQL