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 相关文章推荐
JavaScript 动态添加表格行 使用模板、标记
Oct 24 Javascript
ExtJs 3.1 XmlTreeLoader Example Error
Feb 09 Javascript
div+css布局的图片连续滚动js实现代码
May 04 Javascript
为radio类型的INPUT添加客户端脚本(附加实现JS来禁用onClick事件思路代码)
Nov 11 Javascript
javascript中的一些注意事项 更新中
Dec 06 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
Jun 01 Javascript
AngularJS基础 ng-open 指令简单实例
Aug 02 Javascript
jquery.masonry瀑布流效果
May 25 jQuery
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
Sep 14 Javascript
js实现漂亮的星空背景
Nov 01 Javascript
flexible.js实现移动端rem适配方案
Apr 07 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
Oct 22 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合并数组中相同元素的方法
2014/11/13 PHP
简单实用的PHP防注入类实例
2014/12/05 PHP
在win系统安装配置 Memcached for PHP 5.3 图文教程
2015/03/03 PHP
php文件后缀不强制为.php的实操方法
2019/09/18 PHP
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
浅谈Javascript事件模拟
2012/06/27 Javascript
javascript阻止浏览器后退事件防止误操作清空表单
2013/11/22 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
简单实现的JQuery文本框水印插件
2016/06/14 Javascript
jQuery给div,Span, a ,button, radio 赋值与取值
2016/06/24 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
Nodejs 复制文件/文件夹的方法
2017/08/24 NodeJs
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
原生js实现照片墙效果
2020/10/13 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
Python入门篇之条件、循环
2014/10/17 Python
使用Python编写提取日志中的中文的脚本的方法
2015/04/30 Python
Python实现将文本生成二维码的方法示例
2017/07/18 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
2018/03/22 Python
Python实现查看系统启动项功能示例
2018/05/10 Python
python3 打开外部程序及关闭的示例
2018/11/06 Python
django 自定义过滤器(filter)处理较为复杂的变量方法
2019/08/12 Python
python模拟键盘输入 切换键盘布局过程解析
2019/08/15 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
Keras中的两种模型:Sequential和Model用法
2020/06/27 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
初中优秀班集体申报材料
2014/05/01 职场文书
应届生找工作求职信
2014/06/24 职场文书
医德医风自我评价2015
2015/03/03 职场文书
酒店前台接待岗位职责
2015/04/02 职场文书
电话营销开场白
2015/05/29 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android