JavaScript 5 新增 Array 方法实现介绍
2012-02-06 00:00
471 查看
/*! * 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中数组Array对象调用不同的方法可以实现几种数据结构
- JavaScript的String类型replace()方法介绍和使用replace()方法实现简单html模板替换功能
- ECMAScript5新增Array方法forEach的实现
- 【javascript基础】之【javascript1.6 Array 新增方法】
- JavaScript学习之Array(数组对象)方法介绍
- Javascript 1.6 数组新增方法介绍之 forEach()
- 在Javascript中对Array的一些方法扩展,实现常用的查询处理。
- 重写javascript的Array.prototype.push方法实现类似java.util.set添加不重复元素
- JavaScript ES5标准中新增的Array方法
- 【javascript基础】之【javascript1.6 Array 新增方法】之【indexOf】
- JavaScript实现自定义媒体播放器方法介绍
- Javascript中String、Array常用方法介绍
- Javascript实现Array和String互转换的方法
- 201507152326_《Javascript实现跨域有4种方法——介绍jsonp和html5方法》
- JavaScript中利用Array和Object实现Map的方法
- JavaScript Array对象indexOf()方法的实现
- javaScript实现定时显示隐藏、BOM对象方法介绍、表单简单校验、表格换色、DOM、二级联动
- ECMAScript5新增Array方法forEach的实现
- JavaScript中利用Array和Object实现Map的方法