js Array¶ÔÏóµÄÀ©Õ¹º¯Êý´úÂë

¡¡¡¡Ê¹ÓÃ

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡<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,'eight',9,'ten'];

¡¡¡¡var oddArray=myArray.filter(isNumeric);  // outputs: 1,3,5,7,9

¡¡¡¡var oddArray=myArray.some(isNumeric);  // outputs: true

¡¡¡¡var oddArray=myArray.every(isNumeric);  // outputs: false

¡¡¡¡var printArray =function(x, idx){

¡¡¡¡document.writeln('['+idx+'] = '+x);

¡¡¡¡}

¡¡¡¡myArray.forEach(printArray);// outputs: [0] = 1 [1] = two [2] = 3 [3] = four [4] = 5

¡¡¡¡myArray.remove(9);

¡¡¡¡document.writeln(myArray);

¡¡¡¡

¸´ÖÆ´úÂë ´úÂëÈçÏÂ:

¡¡¡¡if (!Array.prototype.every)

¡¡¡¡{

¡¡¡¡Array.prototype.every = function(fun /*, thisp*/)

¡¡¡¡{

¡¡¡¡var len = this.length;

¡¡¡¡if (typeof fun != "function")

¡¡¡¡throw new TypeError();

¡¡¡¡var thisp = arguments[1];

¡¡¡¡for (var i = 0; i < len; i++)

¡¡¡¡{

¡¡¡¡if (i in this &&

¡¡¡¡!fun.call(thisp, this[i], i, this))

¡¡¡¡return false;

¡¡¡¡}

¡¡¡¡return true;

¡¡¡¡};

¡¡¡¡}

¡¡¡¡if (!Array.prototype.filter)

¡¡¡¡{

¡¡¡¡Array.prototype.filter = function(fun /*, thisp*/)

¡¡¡¡{

¡¡¡¡var len = this.length;

¡¡¡¡if (typeof fun != "function")

¡¡¡¡throw new TypeError();

¡¡¡¡var res = new Array();

¡¡¡¡var thisp = arguments[1];

¡¡¡¡for (var i = 0; i < len; i++)

¡¡¡¡{

¡¡¡¡if (i in this)

¡¡¡¡{

¡¡¡¡var val = this[i]; // in case fun mutates this

¡¡¡¡if (fun.call(thisp, val, i, this))

¡¡¡¡res.push(val);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡return res;

¡¡¡¡};

¡¡¡¡}

¡¡¡¡if (!Array.prototype.forEach)

¡¡¡¡{

¡¡¡¡Array.prototype.forEach = function(fun /*, thisp*/)

¡¡¡¡{

¡¡¡¡var len = this.length;

¡¡¡¡if (typeof fun != "function")

¡¡¡¡throw new TypeError();

¡¡¡¡var thisp = arguments[1];

¡¡¡¡for (var i = 0; i < len; i++)

¡¡¡¡{

¡¡¡¡if (i in this)

¡¡¡¡fun.call(thisp, this[i], i, this);

¡¡¡¡}

¡¡¡¡};

¡¡¡¡}

¡¡¡¡if (!Array.prototype.map)

¡¡¡¡{

¡¡¡¡Array.prototype.map = function(fun /*, thisp*/)

¡¡¡¡{

¡¡¡¡var len = this.length;

¡¡¡¡if (typeof fun != "function")

¡¡¡¡throw new TypeError();

¡¡¡¡var res = new Array(len);

¡¡¡¡var thisp = arguments[1];

¡¡¡¡for (var i = 0; i < len; i++)

¡¡¡¡{

¡¡¡¡if (i in this)

¡¡¡¡res[i] = fun.call(thisp, this[i], i, this);

¡¡¡¡}

¡¡¡¡return res;

¡¡¡¡};

¡¡¡¡}

¡¡¡¡if (!Array.prototype.some)

¡¡¡¡{

¡¡¡¡Array.prototype.some = function(fun /*, thisp*/)

¡¡¡¡{

¡¡¡¡var len = this.length;

¡¡¡¡if (typeof fun != "function")

¡¡¡¡throw new TypeError();

¡¡¡¡var thisp = arguments[1];

¡¡¡¡for (var i = 0; i < len; i++)

¡¡¡¡{

¡¡¡¡if (i in this &&

¡¡¡¡fun.call(thisp, this[i], i, this))

¡¡¡¡return true;

¡¡¡¡}

¡¡¡¡return false;

¡¡¡¡};

¡¡¡¡}

¡¡¡¡Array.prototype.sortNum = function() {

¡¡¡¡return this.sort( function (a,b) { return a-b; } );

¡¡¡¡}

¡¡¡¡<!--

¡¡¡¡var tmp = [5,9,12,18,56,1,10,42,'blue',30, 7,97,53,33,30,35,27,30,'35','Ball', 'bubble'];

¡¡¡¡var thirty=tmp.find(30);             // Returns 9, 14, 17

¡¡¡¡var thirtyfive=tmp.find('35');       // Returns 18

¡¡¡¡var thirtyfive=tmp.find(35);         // Returns 15

¡¡¡¡var haveBlue=tmp.find('blue');       // Returns 8

¡¡¡¡var notFound=tmp.find('not there!'); // Returns false

¡¡¡¡var regexp1=tmp.find(/^b/);          // returns 8,20    (first letter starts with b)

¡¡¡¡var regexp1=tmp.find(/^b/i);         // returns 8,19,20 (same as above but ignore case)

¡¡¡¡-->

¡¡¡¡Array.prototype.find = function(searchStr) {

¡¡¡¡var returnArray = false;

¡¡¡¡for (i=0; i<this.length; i++) {

¡¡¡¡if (typeof(searchStr) == 'function') {

¡¡¡¡if (searchStr.test(this[i])) {

¡¡¡¡if (!returnArray) { returnArray = [] }

¡¡¡¡returnArray.push(i);

¡¡¡¡}

¡¡¡¡} else {

¡¡¡¡if (this[i]===searchStr) {

¡¡¡¡if (!returnArray) { returnArray = [] }

¡¡¡¡returnArray.push(i);

¡¡¡¡}

¡¡¡¡}

¡¡¡¡}

¡¡¡¡return returnArray;

¡¡¡¡}

¡¡¡¡//Ëæ»ú¸Ä±äÊý×éµÄÅÅÐò

¡¡¡¡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,Èç¹ûÓöµ½Êý×飬¸´ÖÆÊý×éÖеÄÔªËØ

¡¡¡¡Array.prototype.concat = function(){

¡¡¡¡var i=0;

¡¡¡¡while(i<arguments.length){

¡¡¡¡if(typeof arguments[i] === 'object'&&typeof arguments[i].splice ==='function' &&!arguments[i].propertyIsEnumerable('length')){

¡¡¡¡// NOT SHALLOW COPY BELOW

¡¡¡¡// Array.prototype.concat.apply(this,arguments[i++]);

¡¡¡¡var j=0;

¡¡¡¡while(j<arguments[i].length) this.splice(this.length,0,arguments[i][j++]);

¡¡¡¡i++;

¡¡¡¡} else{

¡¡¡¡this[this.length]=arguments[i++];

¡¡¡¡}

¡¡¡¡}

¡¡¡¡return this;

¡¡¡¡}

¡¡¡¡Array.prototype.join = function(separator){

¡¡¡¡var i=0,str="";

¡¡¡¡while(i<this.length) str+=this[i++]+separator;

¡¡¡¡return str;

¡¡¡¡}

¡¡¡¡Array.prototype.pop = function() { return this.splice(this.length-1,1)[0];}

¡¡¡¡Array.prototype.push = function(){

¡¡¡¡Array.prototype.splice.apply(this,

¡¡¡¡[this.length,0].concat(Array.prototype.slice.apply(arguments))); //ÕâÀïûÓÐÖ±½Ó´¦Àí²ÎÊý£¬¶øÊǸ´ÖÆÁËÒ»ÏÂ

¡¡¡¡return this.length;

¡¡¡¡}

¡¡¡¡Array.prototype.reverse = function(){

¡¡¡¡for(var i=0;i<this.length/2;i++){

¡¡¡¡var temp = this[i];

¡¡¡¡this[i]= this[this.length-1-i];

¡¡¡¡this[this.length-1-i] = temp;

¡¡¡¡}

¡¡¡¡return this;

¡¡¡¡}

¡¡¡¡Array.prototype.slice = function(start, end){

¡¡¡¡var len =this.length;

¡¡¡¡start=start<0?start+=len:start?start:0;

¡¡¡¡end =end<0?end+=len:end>len?len:end?end:len;

¡¡¡¡var i=start;

¡¡¡¡var res = [];

¡¡¡¡while(i<end){

¡¡¡¡res.push(this[i++]);

¡¡¡¡}

¡¡¡¡return res;

¡¡¡¡}

¡¡¡¡//arr.unshift(ele1,ele2,ele3....)

¡¡¡¡Array.prototype.unshift =function(){

¡¡¡¡Array.prototype.splice.apply(this,[0,0].concat(Array.prototype.slice.apply(this,arguments)));

¡¡¡¡}