var a ={ "name":"array", "length":10 }; var b = ["1","2","3","4"]; //判斷是否爲數組 // console.log( a instanceof Object ); // console.log( a instanceof Array ); // console.log( b instanceof Array ); // console.log( b instanceof Object ); // console.log(Array.isArray(b)); // console.log(b.constructor===Array) // console.log(Object.prototype.toString.call(b) === "[object Array]"); // if(b.constructor.pop !== undefined){ // console.log("是一個數組"); // } //數組去重 var c =[3,3,4,5,6,8,9,9,8,4,5,5,1,2]; Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len=arr.length; //for循環是先執行外層循環,再執行內層循環,執行內循環時,是知足內層條件就一直執行,直到條件不知足,纔在執行外循環 for(i=0;i<len;i++){ //此處下標 i 的值爲0,執行裏面的循環,就是用下標爲0 的元素,與其餘全部的元素相比較, for(j=i+1;j<len;j++){ //此處當前一個值與後一個值相等時,他們的下標都加一。解釋這裏,就是說此處小標i的值在後面有相等的,就過濾掉了下標i的值,繼續i加一的循環。 if(arr[i]===arr[j]){ j = ++i; } console.log(1111) } result.push(arr[i]); console.log(22222) } return result; } console.log(c.distinct()); Array.prototype.cuchong = function(){ var ar= this, len = ar.length; ar.sort(function(a,b){ return a-b; }) //首先傳入的值是數組的長度,遞歸,發現後一個值與前一個值相等時,刪除掉後一個值。再遞歸 function loop(index){ if(index>=1){ if(ar[index] === ar[index-1]){ ar.splice(index,1) } loop(index-1); } } loop(len-1); return ar }; var d =c.cuchong(); console.log(c.cuchong())