作家
登录

ArrayList类(增强版)

作者: 来源:www.28hudong.com 2013-03-30 03:35:10 阅读 我要评论

Author:月影 From:http://bbs.51js.com/thread-66469-1-1.html 复制代码 代码如下:<script> function ArrayList() { var ins = Array.apply(this, arguments); ins.constructor = arguments.callee; ins.base = Array; ins.each = function(closure) { if(typeof closure == 'undefined') closure = function(x){return x}; if(typeof closure != 'function') { var c = closure; closure = function(x){return x == c} } var ret = new ArrayList(); var args = Array.apply(this, arguments).slice(1); for(var i = 0; i < this.length; i++) { var rval = closure.apply(this, [this[i]].concat(args).concat(i)) if(rval || rval === 0) ret.push(rval); } return ret; } ins.trim = function() { return this.each.apply(this); } ins.all = function(closure) { return this.each.apply(this, arguments).length == this.length; } ins.any = function(closure) { return this.each.apply(this, arguments).length > 0; } ins.contains = function(el) { return this.any(function(x){return x == el}); } ins.indexOf = function(el) { var ret = this.each.call(this, function(x, i){return el == x?i:false})[0]; return ret ? ret : -1; } ins.subarr = function(start, end) { end = end || Math.Infinity; return this.each.call(this, function(x, i){return i >= start && i < end ? x : null}); } ins.valueOf = ins.toString; ins.toString = function() { return '['+this.valueOf()+']'; } ins.map = function(list, closure) { if (typeof list == 'function' && typeof closure != 'function') { var li = closure; closure = list; list = li; } closure = closure || ArrayList; return this.each.call(this, function(x, i){return closure.call(this, x, list[i])}); }; ins.slice = function() { return this.constructor(ins.base.prototype.slice.apply(this, arguments)); } ins.splice = function() { return this.constructor(ins.base.prototype.splice.apply(this, arguments)); } ins.concat = function() { return this.constructor(ins.base.prototype.concat.apply(this, arguments)); } return ins; } var a = new ArrayList(1,2,3); alert(a.length); alert(a); alert(a instanceof Array); alert(a.constructor); alert(a instanceof ArrayList); // 可惜这个值不对,但是没法实现,只好放弃了 alert(a.each(function(x){return x+x})); alert(a.all(function(x){return x>0})); alert(a.all(function(x){return x<1})); alert(a.any(function(x){return x == 2})); alert(a.contains(2)); alert(a.contains(-1)); var b = a.map([3,2], function(x, y){return x+y}); alert(b); alert(a.map([2,3,4])); alert(a.indexOf(2)); alert(a.indexOf(-1)); alert(a.subarr(1,3)); alert(a.toString()); var b = new ArrayList(a,a); alert(b.toString()); alert(b.slice(1)); </script> arr.all 是当数组(集合)中的所有元素都满足条件时,返回true,否则返回false arr.any 是当数组(集合)中的所有元素中任意一个满足条件时,返回true,如果都不满足,返回false arr.each 返回由符合条件的每一个元素构成的子数组 arr.map 是匹配两个数组(集合)并把它们的元素用指定闭包进行计算

  推荐阅读

  一个不错的可以检测多中浏览器的函数和其它功能第1/2页

//Examine the browser 检测浏览器的函数var userAgent = navigator.userAgent.toLowerCase(); var is_opera = (userAgent.indexOf('opera') != -1); var is_saf = ((userAgent.indexOf('applewebkit') != -1>>>详细阅读


本文标题:ArrayList类(增强版)

地址:http://www.17bianji.com/kaifa2/JS/30664.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)