方法1:
[js]
view plain
copy
array.prototype.method1 =
function
()
} return
arr;
}
方法2:
[js]
view plain
copy
array.prototype.method2 = function
();
//定義乙個hash表
vararr;
//定義乙個臨時陣列
for(
vari = 0; i <
this
.length; i++)
} return
arr;
} 改進點:
不同的鍵可能會被誤認為一樣;例如: a[1]、a["1"] ,還需要對型別進行判斷
function
unique(array), r = , len = array.length,
val,
type;
for(var i =
0; i < array.length; i++)
else
if(n[
val].indexof(
type) < 0)
}
return
r;
}
方法3:
[js]
view plain
copy
array.prototype.method3 =
function
()
} return
arr;
}
方法4:
[js]
view plain
copy
array.prototype.method4 =
function
()
} return
arr;
}
例如:[js]
view plain
copy
vararr = [112,112,34,
'你好'
,112,112,34,
'你好'
,'str'
,'str1'
];
alert(arr.method3());
方法1和方法3都用到了陣列的indexof()方法,此方法主要用來查詢元素在陣列中第一次出現的位置。比較浪費資源和時間。
方法2使用的是hash表,把已經出現過的元素通過下標形式寫入到乙個object內,下標的引用要比用陣列indexof()方法搜尋節省時間。
方法4是先將陣列排序,然後一次比較相鄰的兩個元素的值,排序使用的是js原生的sort()方法。
JS陣列去重,物件去重
例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...
js 陣列去重
function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...
JS 陣列去重
我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...