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 相关文章推荐
SUN的《AJAX与J2EE》全文译了
Feb 23 Javascript
jquery $.fn $.fx是什么意思有什么用
Nov 04 Javascript
javascript相关事件的几个概念
May 21 Javascript
jQuery实现向下滑出的二级菜单效果实例
Aug 22 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
Nov 29 Javascript
JS面向对象编程详解
Mar 06 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
AngularJS基础 ng-cloak 指令简单示例
Aug 01 Javascript
axios学习教程全攻略
Mar 26 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
浅谈es6 javascript的map数据结构
Dec 14 Javascript
微信小程序实现左右联动的实战记录
Jul 05 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
YB217、YB235、YB400浅听
2021/03/02 无线电
PHP的分页功能
2007/03/21 PHP
PHP has encountered an Access Violation at 7C94BD02解决方法
2009/08/24 PHP
PHP以mysqli方式连接类完整代码实例
2014/07/15 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
javascript数组使用调用方法汇总
2007/12/08 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
全面解析Bootstrap排版使用方法(文字样式)
2015/11/30 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
JavaScript中this的四个绑定规则总结
2016/09/26 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
详解Vue2.x-directive的学习笔记
2017/07/17 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
js操作二进制数据方法
2018/03/03 Javascript
Auto.js自动收取自己和好友蚂蚁森林能量脚本
2018/06/28 Javascript
JS加密插件CryptoJS实现AES加密操作示例
2018/08/16 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
webpack+vue.js构建前端工程化的详细教程
2020/05/10 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
pymssql ntext字段调用问题解决方法
2008/12/17 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
python实现俄罗斯方块游戏
2020/03/25 Python
pytorch常见的Tensor类型详解
2020/01/15 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
德国户外商店:eXXpozed
2020/07/25 全球购物
MyBag中文网:英国著名的时尚包袋电商零售网站
2020/07/31 全球购物
节水口号标语
2014/06/19 职场文书
贷款担保书
2015/01/20 职场文书
我们的节日中秋节活动总结
2015/03/23 职场文书
2015年暑期社会实践方案
2015/07/14 职场文书
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python