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 相关文章推荐
用JTrackBar实现的模拟苹果风格的滚动条
Aug 06 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
js实现的四级左侧网站分类菜单实例
May 06 Javascript
JS实现支持多选的遍历下拉列表代码
Aug 20 Javascript
Jquery $when done then的用法详解
May 20 Javascript
详解jQuery的Cookie插件
Nov 23 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
Mar 03 Javascript
jQuery插件FusionCharts绘制的3D饼状图效果实例【附demo源码下载】
Mar 03 Javascript
Vue keep-alive实践总结(推荐)
Aug 31 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 Javascript
Vue使用预渲染代替SSR的方法
Jul 02 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实现生成唯一会员卡号
2015/08/24 PHP
jQuery ajax+PHP实现的级联下拉列表框功能示例
2019/02/12 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
Array.prototype.slice.apply的使用方法
2010/03/17 Javascript
javascript淡入淡出效果的实现思路
2012/03/31 Javascript
javascript动态加载实现方法一
2012/08/22 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
2015/10/12 Javascript
Nodejs的express使用教程
2015/11/23 NodeJs
Javascript的比较汇总
2016/07/25 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
BootStrap Tooltip插件源码解析
2016/12/27 Javascript
vuex学习之Actions的用法详解
2017/08/29 Javascript
jQuery实现的粘性滚动导航栏效果实例【附源码下载】
2017/10/19 jQuery
vue 组件高级用法实例详解
2018/04/11 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
node版本管理工具n包使用教程详解
2018/11/09 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
[03:43]TI9战队采访——PSG.LGD
2019/08/22 DOTA
Python程序语言快速上手教程
2012/07/18 Python
wxpython中自定义事件的实现与使用方法分析
2016/07/21 Python
scrapy爬虫完整实例
2018/01/25 Python
python3+PyQt5实现拖放功能
2018/04/24 Python
python3 判断列表是一个空列表的方法
2018/05/04 Python
Python实现爬虫从网络上下载文档的实例代码
2018/06/13 Python
使用pytorch和torchtext进行文本分类的实例
2020/01/08 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
pandas分批读取大数据集教程
2020/06/06 Python
Python-split()函数实例用法讲解
2020/12/18 Python
2014最新股权信托合同协议书
2014/11/18 职场文书
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python