JavaScript常用字符串与数组扩展函数小结(3)

Array.prototype.shuffle = function (){ for(var rnd, tmp, i=this.length; i; rnd=parseInt(Math.random()*i), tmp=this[--i], this[i]=this[rnd], this[rnd]=tmp); return this; } <!--var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; var yourArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; document.writeln(myArray.compare(yourArray)); // outputs: true;--> Array.prototype.compare = function(testArr) { if (this.length != testArr.length) return false; for (var i = 0; i < testArr.length; i++) { if (this[i].compare) { if (!this[i].compare(testArr[i])) return false; } if (this[i] !== testArr[i]) return false; } return true; }

去掉数组中重复的值var a = new Array("5","7","7"); a.unique(); 

Array.prototype.unique = function() { var data = this || []; var a = {}; //声明一个对象,javascript的对象可以当哈希表用 for (var i = 0; i < data.length; i++) { a[data[i]] = true; //设置标记,把数组的值当下标,这样就可以去掉重复的值 } data.length = 0; for (var i in a) { //遍历对象,把已标记的还原成数组 this[data.length] = i; } return data; } Array.prototype.addAll = function($array) { if($array == null || $array.length == 0) return; for(var $i=0; $i<$array.length; $i++) this.push($array[$i]); } Array.prototype.contains = function($value) { for(var $i=0; $i<this.length; $i++) { var $element = this[$i]; if($element == $value) return true; } return false; } Array.prototype.indexOf = function($value) { for(var $i=0; $i<this.length; $i++) { if(this[$i] == $value) return $i; } return -1; } if (!Array.prototype.lastIndexOf) { Array.prototype.lastIndexOf = function(elt /*, from*/) { var len = this.length; var from = Number(arguments[1]); if (isNaN(from)) { from = len - 1; } else { from = (from < 0) ? Math.ceil(from) : Math.floor(from); if (from < 0) from += len; else if (from >= len) from = len - 1; } for (; from > -1; from--) { if (from in this && this[from] === elt) return from; } return -1; }; } Array.prototype.insertAt = function($value, $index) { if($index < 0) this.unshift($value); else if($index >= this.length) this.push($value); else this.splice($index, 0, $value); }


根据数组的下标来删除元素  
 

Array.prototype.removeByIndex=function($n) {  if($n<0){ //如果n<0,则不进行任何操作。   return this; }else{ return this.slice(0,$n).concat(this.slice($n+1,this.length)); } }

依赖indexOf  

Array.prototype.remove = function($value) { var $index = this.indexOf($value); if($index != -1) this.splice($index, 1); } Array.prototype.removeAll = function() { while(this.length > 0) this.pop(); } Array.prototype.replace = function($oldValue, $newValue) { for(var $i=0; $i<this.length; $i++) { if(this[$i] == $oldValue) { this[$i] = $newValue; return; } } } Array.prototype.swap = function($a, $b) { if($a == $b) return; var $tmp = this[$a]; this[$a] = this[$b]; this[$b] = $tmp; } Array.prototype.max = function() { return Math.max.apply({}, this); } Array.prototype.min = function() { return Math.min.apply({}, this); } Array.prototype.splice = function(start, delLen, item){ var len =this.length; start = start<0?0:start>len?len:start?start:0; delLen=delLen<0?0:delLen>len?len:delLen?delLen:len; var arr =[],res=[]; var iarr=0,ires=0,i=0; for(i=0;i<len;i++){ if(i<start|| ires>=delLen) arr[iarr++]=this[i]; else { res[ires++]=this[i]; if(item&&ires==delLen){ arr[iarr++]=item; } } } if(item&&ires<delLen) arr[iarr]=item; for(var i=0;i<arr.length;i++){ this[i]=arr[i]; } this.length=arr.length; return res; } Array.prototype.shift = function(){ if(!this) return[];return this.splice(0,1)[0];}


分开添加,关键字shallow copy,如果遇到数组,复制数组中的元素 

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgyydw.html