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 17 Javascript
JS限制Textarea文本域字符个数的具体实现
Aug 02 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
Dec 27 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
Jan 26 Javascript
手写的一个兼容各种浏览器的javascript getStyle函数(获取元素的样式)
Jun 06 Javascript
BootStrap日期控件在模态框中选择时间下拉菜单无效的原因及解决办法(火狐下不能点击)
Aug 18 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
AngularJS入门教程之过滤器用法示例
Nov 02 Javascript
深入理解Javascript中的作用域链和闭包
Apr 25 Javascript
详解vue.js之props传递参数
Dec 12 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
微信小程序文章详情页面实现代码
Sep 10 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 将excel导入mysql
2009/11/09 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
PHP pthreads v3使用中的一些坑和注意点分析
2020/02/21 PHP
javascript 框架小结 个人工作经验
2009/06/13 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
JS获取年月日时分秒的方法分析
2016/11/28 Javascript
BootStrap组件之进度条的基本用法
2017/01/19 Javascript
详解vue-router 2.0 常用基础知识点之router.push()
2017/05/10 Javascript
JavaScript模拟文件拖选框样式v1.0的实例
2017/08/04 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
Vue2.0+ElementUI实现表格翻页的实例
2017/10/23 Javascript
JavaScript登录验证基础教程
2017/11/01 Javascript
Vue项目组件化工程开发实践方案
2018/01/09 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
layui输入框只允许输入中文且判断长度的例子
2019/09/18 Javascript
js实现百度淘宝搜索功能
2020/02/17 Javascript
JS highcharts动态柱状图原理及实现
2020/10/16 Javascript
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python 由字符串函数名得到对应的函数(实例讲解)
2017/08/10 Python
解决Python3.5+OpenCV3.2读取图像的问题
2018/12/05 Python
使用 Python 玩转 GitHub 的贡献板(推荐)
2019/04/04 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
2019/11/06 Python
pycharm 实现本地写代码,服务器运行的操作
2020/06/08 Python
英国著名药妆店:Superdrug
2021/02/13 全球购物
优秀的茶餐厅创业计划书
2014/01/03 职场文书
倡议书范文格式
2014/05/12 职场文书
婚礼证婚人演讲稿
2014/09/13 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
内勤岗位职责
2015/02/10 职场文书
工作年限证明范本
2015/06/15 职场文书
交通安全温馨提示语
2015/07/14 职场文书
Python sklearn分类决策树方法详解
2022/09/23 Python