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 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
不能再简单的无闪刷新验证码原理很简单
Nov 05 Javascript
Jquery 例外被抛出且未被接住原因介绍
Sep 04 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
Mar 17 Javascript
jQuery中 attr() 方法使用小结
May 03 Javascript
浅析JS获取url中的参数实例代码
Jun 14 Javascript
jquery实现文本框的禁用和启用
Dec 07 Javascript
js实现日历的简单算法
Jan 24 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
Mar 13 Javascript
微信小程序 自定义Toast实例代码
Jun 12 Javascript
JavaScript 数组的进化与性能分析
Sep 18 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
May 09 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单例模式实现(对象只被创建一次)
2012/12/05 PHP
ThinkPHP模板中判断volist循环的最后一条记录的验证方法
2014/07/01 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
实例讲解php将字符串输出到HTML
2019/01/27 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
Thinkphp框架使用list_to_tree 实现无限级分类列出所有节点示例
2020/04/04 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
jQuery DOM操作小结与实例
2010/01/07 Javascript
Jquery ajaxsubmit上传图片实现代码
2010/11/04 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
JavaScript Serializer序列化时间处理示例
2014/07/31 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
jQuery实现鼠标滑过图片移动特效
2016/12/08 Javascript
详解使用nodeJs安装Vue-cli
2017/05/17 NodeJs
在vue项目中引用Iview的方法
2018/09/14 Javascript
vue自定义js图片碎片轮播图切换效果的实现代码
2019/04/28 Javascript
vue组件间通信六种方式(总结篇)
2019/05/15 Javascript
vue使用require.context实现动态注册路由
2020/12/25 Vue.js
Python利用多进程将大量数据放入有限内存的教程
2015/04/01 Python
浅谈python之新式类
2018/08/12 Python
python实现决策树分类
2018/08/30 Python
Django框架模板介绍
2019/01/15 Python
python使用time、datetime返回工作日列表实例代码
2019/05/09 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
Python3爬虫带上cookie的实例代码
2020/07/28 Python
CSS3中的常用选择器使用示例整理
2016/06/13 HTML / CSS
浅谈Html5中视频 音频标签 进度条的问题
2016/07/26 HTML / CSS
松本清官方海外旗舰店:日本最大的药妆连锁店
2017/11/21 全球购物
Fox Racing英国官网:越野摩托车和山地自行车服装
2020/02/26 全球购物
秋季校运动会广播稿
2014/02/23 职场文书
任命书格式
2014/06/05 职场文书
无财产无子女离婚协议书范文
2014/09/14 职场文书
营销与策划实训报告
2014/11/05 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书