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 相关文章推荐
form中限制文本字节数js代码
Jun 10 Javascript
JS操作select下拉框动态变动(创建/删除/获取)
Jun 02 Javascript
当前页禁止复制粘贴截屏代码小集
Jul 24 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
Oct 16 Javascript
JS实现简单的二元方程计算器功能示例
Jan 03 Javascript
详解如何构建Angular项目目录结构
Jul 13 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
Vue.js实现数据响应的方法
Aug 13 Javascript
JS实现烟花爆炸效果
Mar 10 Javascript
Vue如何基于vue-i18n实现多国语言兼容
Jul 17 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
JS实现页面炫酷的时钟特效示例
Aug 14 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文件下载类
2006/12/06 PHP
PHP ajax 分页类代码
2008/11/13 PHP
zend framework多模块多布局配置
2011/02/26 PHP
php下通过IP获取地理位置的代码(小偷程序)
2011/06/09 PHP
url decode problem 解决方法
2011/12/26 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
解放web程序员的输入验证
2006/10/06 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
2012/01/15 Javascript
jquery实现的随机多彩tag标签随机颜色和字号大小效果
2014/03/27 Javascript
jquery 3D 标签云示例代码
2014/06/12 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
jQuery通过控制节点实现仅在前台通过get方法完成参数传递
2015/02/02 Javascript
理解javascript中的原型和原型链
2015/07/30 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
Node.js程序中的本地文件操作用法小结
2016/03/06 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
Python Queue模块详解
2014/11/30 Python
Django视图之ORM数据库查询操作API的实例
2017/10/27 Python
python实现简易内存监控
2018/06/21 Python
python实现textrank关键词提取
2018/06/22 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python基于socket进行端口转发实现后门隐藏的示例
2019/07/25 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
HTML5 FileReader对象的具体使用方法
2020/05/22 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
小学生安全保证书
2014/02/01 职场文书
致标枪运动员加油稿
2014/02/15 职场文书
2014年消防工作实施方案
2014/02/20 职场文书
贷款委托书范本
2014/04/08 职场文书
《鸟岛》教学反思
2014/04/26 职场文书