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 相关文章推荐
Prototype Date对象 学习
Jul 12 Javascript
JQuery上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
javascript,jquery闭包概念分析
Jun 19 Javascript
JavaScript中使用构造函数实现继承的代码
Aug 12 Javascript
js验证模型自我实现的具体方法
Jun 21 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
AngularJs 国际化(I18n/L10n)详解
Sep 01 Javascript
微信小程序 获取设备信息 API实例详解
Oct 02 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
Dec 14 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
Jan 04 Javascript
手把手15分钟搭一个企业级脚手架
Sep 16 Javascript
vue.js的简单自动求和计算实例
Nov 08 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简单封装了一些常用JS操作
2007/02/25 PHP
建站常用13种PHP开源CMS比较
2009/08/23 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
php简单分页类实现方法
2015/02/26 PHP
PHP实现浏览器中直接输出图片的方法示例
2018/03/14 PHP
23个超流行的jQuery相册插件整理分享
2011/04/25 Javascript
js实现下拉列表选中某个值的方法(3种方法)
2015/12/17 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
vue1.0和vue2.0的watch监听事件写法详解
2018/09/11 Javascript
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
layui点击弹框页面 表单请求的方法
2019/09/21 Javascript
Python中的index()方法使用教程
2015/05/18 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
使用python和pygame制作挡板弹球游戏
2019/12/03 Python
Python 中的pygame安装与配置教程详解
2020/02/10 Python
css和css3弹性盒模型实现元素宽度(高度)自适应
2019/05/15 HTML / CSS
中国旅游网站:同程旅游
2016/09/11 全球购物
宝拉珍选官方旗舰店:2%水杨酸精华液,收缩毛孔粗大和祛痘
2018/07/01 全球购物
综合素质的自我鉴定
2013/10/07 职场文书
大学毕业生的自我鉴定
2013/11/30 职场文书
教师求职信范文分享
2013/12/27 职场文书
高三语文教学反思
2014/01/15 职场文书
七一表彰活动方案
2014/01/18 职场文书
机关门卫制度
2014/02/01 职场文书
支行行长竞聘报告
2014/11/06 职场文书
出国留学单位推荐信
2015/03/26 职场文书
酒会开场白大全
2015/06/01 职场文书
交通处罚决定书
2015/06/24 职场文书
珍爱生命主题班会
2015/08/13 职场文书