關於陣列去重,一直用的是迴圈,還有es6的set,查閱資料竟有如此多的去重方法,整理了如下。直接上乾貨
functionunique(arr)
}if(!isrepeat)
}return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
var newarr =;遍歷傳入的陣列元素,如果新陣列中沒有這個元素,就push進去新陣列for(var i=0; i)
}newarr.push(arr[i]);
}return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
functionunique(arr)item 表示陣列中的每個元素,index 是每個元素的出現位置。indexof 返回匹的第乙個索引。});returnnewarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
function unique(arr) );先排序,再比較相鄰的是否相同,不同就push進去新陣列}
function對陣列排序,將第乙個元素push進去新陣列,再將每個要放進入的元素與新陣列的最後乙個元素比較,不同就pushunique(arr)
}return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
function將陣列值作為物件的屬性,如果重複了就不賦值。unique(arr)
}
return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
function但是要注意這個方法不能應對所有情況unique(arr) ;
for(var i=0; i)
}return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
1. 無法區分隱式型別轉換成字串後一樣的值,比如 1 和 '1' 。
2 .無法處理複雜資料型別,比如物件(因為物件作為 key 會變成 [object object] )。
3. 特殊資料,比如 '__proto__' ,因為 tmp 物件的 __proto__ 屬性無法被重寫。
map 是一種新的資料型別,也是鍵值對的集合,但是「鍵」的範圍不限於字串,各種型別的值(包括物件)都可以當作鍵。
functionunique(arr)
}return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
array.from()
方法從乙個類似陣列或可迭代物件中建立乙個新的陣列例項。
functionincludes()方法用來判斷乙個陣列是否包含乙個指定的值,根據情況,如果包含則返回 true,否則返回false。unique(arr)
var arr = [5,6,1,8,1,6];
console.log(unique(arr));
functionunique(arr)
});return
newarr;
}var arr = [5,6,1,8,1,6];
console.log(unique(arr));
陣列去重方法整理
陣列去重看似乙個簡單的問題,隨著我們的學習,對於新知識的掌握這個曾經困著我們的問題逐漸變得游刃有餘。要去重,中心解決辦法就是比較該陣列中是否重複的元素,而後將重複的元素去掉。以下帶來幾個樓主折磨自己中研究出的一點方法 for迴圈法 思路 將陣列中的每乙個數與陣列中其他的數進行比較,看是否有相同的。如...
JS實現陣列去重方法整理
我們先來看下面的例子,當然 與網路,位址 刪除陣列中多個不連續的陣列元素的正確姿勢 我們現在將陣列中所有的 a 元素刪除 var arr a a b c d a a e g a f arr.foreach function value,index console.log arr a b c d a ...
整理陣列去重的幾種常用方法
最近面試有乙個面試題,要求盡可能多的列舉陣列去重的方法,現整理一下 最簡單陣列去重法 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中 ie8以下不支援陣列的indexof方法 function uniq array return temp var aa 1,2,2,4,9,6,7,5...