我有數字數組,如:[1,4,7,1,2,1,3,1,4]。javascript中是否有unique()函數來刪除數組中的類似元素?
我想刪除重複的元件和對結果進行分類,即,所要求的結果是:[1,2,3,4,7]。
是否有任何內置的Javascript/jQuery的功能,要做到這一點,或者我必須寫我自己?
我有數字數組,如:[1,4,7,1,2,1,3,1,4]。javascript中是否有unique()函數來刪除數組中的類似元素?
我想刪除重複的元件和對結果進行分類,即,所要求的結果是:[1,2,3,4,7]。
是否有任何內置的Javascript/jQuery的功能,要做到這一點,或者我必須寫我自己?
沒有,有沒有內置。此外,您還需要注意的是,默認的排序是詞彙,所以[9, 1, 10].sort()
將返回[1, 10, 9]
。
下面將進行排序,並從數字陣列到位刪除重複:
function sortAndRemoveDuplicates(arr) {
arr.sort(function(a, b) { return a - b; });
var copy = arr.slice(0);
arr.length = 0;
for (var i = 0, len = copy.length; i < len; ++i) {
if (i == 0 || copy[i] != copy[i - 1]) {
arr.push(copy[i]);
}
}
return arr;
}
var arr = [1, 4, 7, 1, 2, 1, 3, 10, 1, 4, 10];
sortAndRemoveDuplicates(arr);
console.log(arr); // [1, 2, 3, 4, 7, 10]
的Underscore library是偉大的,所有這些權謀;我喜歡它,如果沒有它,它將無法生存!
一旦你把它聲明,您可以通過使用下劃線調用它的函數,比如:
_.uniq([1, 4, 7, 1, 2, 1, 3, 1, 4]);
=> [1, 4, 7, 2, 3]
如果你需要它有序:
_.uniq([1, 4, 7, 1, 2, 1, 3, 1, 4]).sort();
=> [1, 2, 3, 4, 7]
從上面的鏈接頁面:
「Underscore提供60多種功能,支持常見的功能嫌疑人:map,select,invoke - 以及更多專門的幫助程序:函數綁定,javasc剽竊模板,深度平等測試等等。「
對於Underscore而言+1 - 但是如果OP要求一個執行'uniq'操作的javascript函數,爲什麼不把它解出來解決他的問題,然後指出所有這些以及更多可以在庫中找到? :-) – 2010-09-10 15:27:23
呃... _.uniq使用_.reduce,它使用_each ...這不會很明確... – Bambax 2010-09-10 15:43:42
Array.prototype.unique = function(){
for(var i = 0; i < this.length; i++){
if(this.indexOf(this[i], i+1) != -1){
this.splice(i,1);
i--;
}
}
return this.sort();
}
var x = [1,'x', 4, 7, 1, 2, 1,'x', 3, 1, 4];
x.unique() // [1, 2, 3, 4, 7, "x"]
如JavaScript 1.6,array.filter()可用於刪除重複值:
[1, 4, 7, 1, 2, 1, 3, 1, 4]
.filter(function (value, index, self) {
return self.indexOf(value) === index;
});
回報
[1, 4, 7, 2, 3]
約過濾器是它的工作原理是什麼好看對數組中的所有值類型:
[1, "d", 4, "e", 7, "e", 1, "a", 2, "d", 1, "b", 3, "c", 1, "e", 4]
.filter(function (value, index, self) {
return self.indexOf(value) === index;
});
個
回報
[1, 2, 3, 4, 7, "a", "b", "c", "d", "e"]
非常感謝! – 2010-09-10 14:42:41