js Array扩展函数

使用

Java代码  

  1. <script language=javascript>  
  2. var isNumeric = function(x) {  
  3.    // returns true if x is numeric and false if it is not.  
  4.    var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;   
  5.    return String(x).match(RegExp);  
  6. }  
  7. var myArray = [1,'two',3,'four',5,'six',7,'eight',9,'ten'];  
  8. var oddArray=myArray.filter(isNumeric);  // outputs: 1,3,5,7,9  
  9. var oddArray=myArray.some(isNumeric);  // outputs: true  
  10. var oddArray=myArray.every(isNumeric);  // outputs: false  
  11. var printArray =function(x, idx){  
  12.    document.writeln('['+idx+'] = '+x);  
  13. }  
  14. myArray.forEach(printArray);// outputs: [0] = 1 [1] = two [2] = 3 [3] = four [4] = 5  
  15. myArray.remove(9);  
  16. document.writeln(myArray);   

 

Java代码  

  1. if (!Array.prototype.every)   
  2. {  
  3.   Array.prototype.every = function(fun /*, thisp*/)  
  4.   {  
  5.     var len = this.length;  
  6.     if (typeof fun != "function")  
  7.       throw new TypeError();  
  8.   
  9.     var thisp = arguments[1];  
  10.     for (var i = 0; i < len; i++)  
  11.     {  
  12.       if (i in this &&  
  13.           !fun.call(thisp, this[i], i, this))  
  14.         return false;  
  15.     }  
  16.   
  17.     return true;  
  18.   };  
  19. }  
  20. if (!Array.prototype.filter)  
  21. {  
  22.   Array.prototype.filter = function(fun /*, thisp*/)  
  23.   {  
  24.     var len = this.length;  
  25.     if (typeof fun != "function")  
  26.       throw new TypeError();  
  27.   
  28.     var res = new Array();  
  29.     var thisp = arguments[1];  
  30.     for (var i = 0; i < len; i++)  
  31.     {  
  32.       if (i in this)  
  33.       {  
  34.         var val = this[i]; // in case fun mutates this  
  35.         if (fun.call(thisp, val, i, this))  
  36.           res.push(val);  
  37.       }  
  38.     }  
  39.   
  40.     return res;  
  41.   };  
  42. }  
  43. if (!Array.prototype.forEach)  
  44. {  
  45.   Array.prototype.forEach = function(fun /*, thisp*/)  
  46.   {  
  47.     var len = this.length;  
  48.     if (typeof fun != "function")  
  49.       throw new TypeError();  
  50.   
  51.     var thisp = arguments[1];  
  52.     for (var i = 0; i < len; i++)  
  53.     {  
  54.       if (i in this)  
  55.         fun.call(thisp, this[i], i, this);  
  56.     }  
  57.   };  
  58. }  
  59. if (!Array.prototype.map)  
  60. {  
  61.   Array.prototype.map = function(fun /*, thisp*/)  
  62.   {  
  63.     var len = this.length;  
  64.     if (typeof fun != "function")  
  65.       throw new TypeError();  
  66.   
  67.     var res = new Array(len);  
  68.     var thisp = arguments[1];  
  69.     for (var i = 0; i < len; i++)  
  70.     {  
  71.       if (i in this)  
  72.         res[i] = fun.call(thisp, this[i], i, this);  
  73.     }  
  74.   
  75.     return res;  
  76.   };  
  77. }  
  78. if (!Array.prototype.some)  
  79. {  
  80.   Array.prototype.some = function(fun /*, thisp*/)  
  81.   {  
  82.     var len = this.length;  
  83.     if (typeof fun != "function")  
  84.       throw new TypeError();  
  85.   
  86.     var thisp = arguments[1];  
  87.     for (var i = 0; i < len; i++)  
  88.     {  
  89.       if (i in this &&  
  90.           fun.call(thisp, this[i], i, this))  
  91.         return true;  
  92.     }  
  93.   
  94.     return false;  
  95.   };  
  96. }  
  97. Array.prototype.sortNum = function() {  
  98.    return this.sort( function (a,b) { return a-b; } );  
  99. }  
  100. <!--  
  101. var tmp = [5,9,12,18,56,1,10,42,'blue',30, 7,97,53,33,30,35,27,30,'35','Ball', 'bubble'];  
  102. var thirty=tmp.find(30);             // Returns 9, 14, 17  
  103. var thirtyfive=tmp.find('35');       // Returns 18  
  104. var thirtyfive=tmp.find(35);         // Returns 15  
  105. var haveBlue=tmp.find('blue');       // Returns 8  
  106. var notFound=tmp.find('not there!'); // Returns false  
  107. var regexp1=tmp.find(/^b/);          // returns 8,20    (first letter starts with b)  
  108. var regexp1=tmp.find(/^b/i);         // returns 8,19,20 (same as above but ignore case)  
  109. -->  
  110. Array.prototype.find = function(searchStr) {  
  111.   var returnArray = false;  
  112.   for (i=0; i<this.length; i++) {  
  113.     if (typeof(searchStr) == 'function') {  
  114.       if (searchStr.test(this[i])) {  
  115.         if (!returnArray) { returnArray = [] }  
  116.         returnArray.push(i);  
  117.       }  
  118.     } else {  
  119.       if (this[i]===searchStr) {  
  120.         if (!returnArray) { returnArray = [] }  
  121.         returnArray.push(i);  
  122.       }  
  123.     }  
  124.   }  
  125.   return returnArray;  
  126. }  
  127. //随机改变数组的排序  
  128. Array.prototype.shuffle = function (){     
  129.     for(var rnd, tmp, i=this.length; i; rnd=parseInt(Math.random()*i), tmp=this[--i], this[i]=this[rnd], this[rnd]=tmp);    
  130.     return this;  
  131. }     
  132. <!--var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];  
  133. var yourArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];  
  134. document.writeln(myArray.compare(yourArray)); // outputs: true;-->  
  135. Array.prototype.compare = function(testArr) {  
  136.     if (this.length != testArr.length) return false;  
  137.     for (var i = 0; i < testArr.length; i++) {  
  138.         if (this[i].compare) {   
  139.             if (!this[i].compare(testArr[i])) return false;  
  140.         }  
  141.         if (this[i] !== testArr[i]) return false;  
  142.     }  
  143.     return true;  
  144. }  
  145. //去掉数组中重复的值var a = new Array("5","7","7"); a.unique();  
  146. Array.prototype.unique = function() {  
  147.     var data = this || [];  
  148.     var a = {}; //声明一个对象,javascript的对象可以当哈希表用  
  149.     for (var i = 0; i < data.length; i++) {  
  150.         a[data[i]] = true;  //设置标记,把数组的值当下标,这样就可以去掉重复的值  
  151.     }  
  152.     data.length = 0;   
  153.       
  154.     for (var i in a) { //遍历对象,把已标记的还原成数组  
  155.         this[data.length] = i;   
  156.     }   
  157.     return data;  
  158. }  
  159.   
  160. Array.prototype.addAll = function($array)  
  161. {  
  162.     if($array == null || $array.length == 0)  
  163.         return;  
  164.   
  165.     for(var $i=0; $i<$array.length; $i++)  
  166.         this.push($array[$i]);  
  167. }  
  168.   
  169. Array.prototype.contains = function($value)  
  170. {  
  171.     for(var $i=0; $i<this.length; $i++)  
  172.     {  
  173.         var $element = this[$i];  
  174.         if($element == $value)  
  175.             return true;  
  176.     }  
  177.   
  178.     return false;  
  179. }  
  180.   
  181. Array.prototype.indexOf = function($value)  
  182. {  
  183.     for(var $i=0; $i<this.length; $i++)  
  184.     {  
  185.         if(this[$i] == $value)  
  186.             return $i;  
  187.     }  
  188.   
  189.     return -1;  
  190. }  
  191. if (!Array.prototype.lastIndexOf)  
  192. {  
  193.   Array.prototype.lastIndexOf = function(elt /*, from*/)  
  194.   {  
  195.     var len = this.length;  
  196.   
  197.     var from = Number(arguments[1]);  
  198.     if (isNaN(from))  
  199.     {  
  200.       from = len - 1;  
  201.     }  
  202.     else  
  203.     {  
  204.       from = (from < 0)  
  205.            ? Math.ceil(from)  
  206.            : Math.floor(from);  
  207.       if (from < 0)  
  208.         from += len;  
  209.       else if (from >= len)  
  210.         from = len - 1;  
  211.     }  
  212.   
  213.     for (; from > -1; from--)  
  214.     {  
  215.       if (from in this &&  
  216.           this[from] === elt)  
  217.         return from;  
  218.     }  
  219.     return -1;  
  220.   };  
  221. }  
  222. Array.prototype.insertAt = function($value, $index)  
  223. {  
  224.     if($index < 0)  
  225.         this.unshift($value);  
  226.     else if($index >= this.length)  
  227.         this.push($value);  
  228.     else  
  229.         this.splice($index, 0, $value);  
  230. }  
  231. /**  
  232. * 根据数组的下标来删除元素  
  233. */    
  234. Array.prototype.removeByIndex=function($n) {     
  235.     if($n<0){ //如果n<0,则不进行任何操作。    
  236.       return this;    
  237.     }else{    
  238.         return this.slice(0,$n).concat(this.slice($n+1,this.length));    
  239.     }    
  240. }  
  241. //依赖indexOf  
  242. Array.prototype.remove = function($value)  
  243. {  
  244.     var $index = this.indexOf($value);  
  245.   
  246.     if($index != -1)  
  247.         this.splice($index, 1);  
  248. }  
  249.   
  250. Array.prototype.removeAll = function()  
  251. {  
  252.     while(this.length > 0)  
  253.         this.pop();  
  254. }  
  255.   
  256. Array.prototype.replace = function($oldValue, $newValue)  
  257. {  
  258.     for(var $i=0; $i<this.length; $i++)  
  259.     {  
  260.         if(this[$i] == $oldValue)  
  261.         {  
  262.             this[$i] = $newValue;  
  263.             return;  
  264.         }  
  265.     }  
  266. }  
  267.   
  268. Array.prototype.swap = function($a, $b)  
  269. {  
  270.     if($a == $b)  
  271.         return;  
  272.   
  273.     var $tmp = this[$a];  
  274.     this[$a] = this[$b];  
  275.     this[$b] = $tmp;  
  276. }  
  277. Array.prototype.max = function() {    
  278.     return Math.max.apply({}, this);    
  279. }    
  280. Array.prototype.min = function() {    
  281.     return Math.min.apply({}, this);    
  282. }   
  283. Array.prototype.splice = function(start, delLen, item){  
  284.     var len =this.length;  
  285.     start = start<0?0:start>len?len:start?start:0;  
  286.     delLen=delLen<0?0:delLen>len?len:delLen?delLen:len;     
  287.       
  288.     var arr =[],res=[];  
  289.     var iarr=0,ires=0,i=0;  
  290.       
  291.     for(i=0;i<len;i++){  
  292.         if(i<start|| ires>=delLen)    arr[iarr++]=this[i];  
  293.         else {  
  294.             res[ires++]=this[i];  
  295.             if(item&&ires==delLen){  
  296.                 arr[iarr++]=item;  
  297.             }  
  298.         }     
  299.     }  
  300.     if(item&&ires<delLen) arr[iarr]=item;   
  301.       
  302.     for(var i=0;i<arr.length;i++){  
  303.         this[i]=arr[i];  
  304.     }  
  305.     this.length=arr.length;  
  306.     return res;  
  307. }  
  308. Array.prototype.shift = function(){ if(!this) return[];return this.splice(0,1)[0];}  
  309.   
  310. //分开添加,关键字shallow copy,如果遇到数组,复制数组中的元素  
  311. Array.prototype.concat = function(){  
  312.     var i=0;  
  313.     while(i<arguments.length){  
  314.         if(typeof arguments[i] === 'object'&&typeof arguments[i].splice ==='function' &&!arguments[i].propertyIsEnumerable('length')){  
  315.         // NOT SHALLOW COPY BELOW  
  316.         //  Array.prototype.concat.apply(this,arguments[i++]);  
  317.             var j=0;  
  318.             while(j<arguments[i].length) this.splice(this.length,0,arguments[i][j++]);  
  319.             i++;  
  320.         } else{  
  321.             this[this.length]=arguments[i++];  
  322.         }  
  323.     }  
  324.     return this;  
  325. }  
  326.   
  327. Array.prototype.join = function(separator){  
  328.     var i=0,str="";  
  329.     while(i<this.length) str+=this[i++]+separator;  
  330.     return str;  
  331. }  
  332.   
  333. Array.prototype.pop = function() { return this.splice(this.length-1,1)[0];}  
  334.   
  335. Array.prototype.push = function(){   
  336.     Array.prototype.splice.apply(this,  
  337.         [this.length,0].concat(Array.prototype.slice.apply(arguments))); //这里没有直接处理参数,而是复制了一下  
  338.     return this.length;  
  339. }  
  340. Array.prototype.reverse = function(){  
  341.     for(var i=0;i<this.length/2;i++){  
  342.         var temp = this[i];  
  343.         this[i]= this[this.length-1-i];  
  344.         this[this.length-1-i] = temp;  
  345.     }  
  346.     return this;  
  347. }  
  348. Array.prototype.slice = function(start, end){  
  349.     var len =this.length;  
  350.     start=start<0?start+=len:start?start:0;  
  351.     end =end<0?end+=len:end>len?len:end?end:len;  
  352.               
  353.     var i=start;  
  354.     var res = [];  
  355.     while(i<end){  
  356.         res.push(this[i++]);  
  357.     }  
  358.     return res;   
  359. }  
  360. //arr.unshift(ele1,ele2,ele3....)  
  361. Array.prototype.unshift =function(){  
  362.     Array.prototype.splice.apply(this,[0,0].concat(Array.prototype.slice.apply(this,arguments)));  
  363. }  
时间: 2024-09-17 04:51:51

js Array扩展函数的相关文章

对象-js array and json 转换

问题描述 js array and json 转换 数组生成: f_level[f_level_amount] = '{"id":"' +menueObj.menueId +'",' +'"name"'+ ':"' + menueObj.menueName +'"}'; 效果图: 实际想要的效果:获得f_level对象,能让我遍历f_level[i].id.f_level[i].name获取 解决方案 直接存储对象就好了,你存

JS Array.slice 截取数组的实现方法_javascript技巧

slice定义和用法 slice() 方法可从已有的数组中返回选定的元素. 语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推. end 可选.规定从何处结束选取.该参数是数组片断结束处的数组下标.如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素.如果这个参数是负数,那么它规定的是从数组尾部开始算

js Array对象的扩展函数代码_javascript技巧

使用 复制代码 代码如下: <script language=javascript>var isNumeric = function(x) {   // returns true if x is numeric and false if it is not.   var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;    return String(x).match(RegExp);}var myArray = [1,'two',3,'four',5,'six',7,'e

JS Array对象入门分析_javascript技巧

不过在学脚本prototype.js的过程中发现有些方法我们很少用到,但是有些方法好像很经典,脚本库在不断的加大,眼前一片...继续我们JS入门,今天学习一下Array数组. 首先我们来看看它的定义: 复制代码 代码如下: var arrayObj = new Array() var arrayObj = new Array([size]) var arrayObj = new Array([element0[, element1[, [, elementN]]]]) 其中:arrayObj是赋

JS array 数组详解_基础知识

1.数组的声明方法 (1): arrayObj = new Array(); //创建一个数组. 复制代码 代码如下: var arr1 = new Array(); (2):arrayObj = new Array([size]) 创建一个数组并指定长度,注意不是上限,是长度. 复制代码 代码如下: var a = new Array(5); (3):arrayObj = new Array([element0[, element1[, ...[, elementN]]]]) 创建一个数组并赋

为原生js Array增加each方法_javascript技巧

复制代码 代码如下: Array.prototype.each = function(fn) { return this.length ? [fn(this.slice(0,1))].concat(this.slice(1).each(fn)) : []; }; [1,2,3,4].each(function(x){ document.write(x + "<br/>"); });

Chrome谷歌浏览器中js代码Array.sort排序的bug乱序解决办法

[现象] 代码如下: var list = [{ n: "a", v: 1 }, { n: "b", v: 1 }, { n: "c", v: 1 }, { n: "d", v: 1 }, { n: "e", v: 1 }, { n: "f", v: 1 }, { n: "g", v: 1 }, { n: "h", v: 1 }, { n: &qu

Js的Array数组对象详解_javascript技巧

本文为大家分享了关于Js的Array数组对象的相关资料,供大家参考,具体内容如下 1. 介绍1.1 说明 数组是值的有序集合.每个值叫做一个元素,而每个元素在数组中有一个位置,以数字表示,称为索引.JavaScript数组是无类型:数组元素可以是任意类型,并且同一个数组中的不同元素也可能有不同的类型. --<JavaScript权威指南(第六版)> 1.2 定义方式 var names = new Array("张三", "李四", "王五&q

js删除Array数组中指定元素的两种方法_javascript技巧

本节内容: js删除Array数组中指定元素 方法一, /* * 方法:Array.remove(dx) 通过遍历,重构数组 * 功能:删除数组元素. * 参数:dx删除元素的下标. */ Array.prototype.remove=function(dx) { if(isNaN(dx)||dx>this.length){return false;} for(var i=0,n=0;i<this.length;i++) { if(this[i]!=this[dx]) { this[n++]=