5種方法實現數組去重
阿新 • • 發佈:2018-06-24
RR 字符串 字符 ++ font i++ div sof n)
- 最簡單的思路,先創建一個新數組作為容器,遍歷原數組,判斷每一項在新數組中是否存在,若不存在則把這一項push到新數組中,若存在則忽略。
var arr = [1, 2, 3, 2, 4, 1]; var newArr = []; for (var i = 0; i < arr.length; i++) { if (newArr.indexOf(arr[i]) === -1) { newArr.push(arr[i]); } } console.log(newArr); // [1, 2, 3, 4]
- 直接修改原數組。遍歷原數組,使用indexOf判斷每一項,若返回值與自身的索引值不相等,說明同樣的值在前面已經出現過(因為indexOf返回的是第一個匹配項的索引值),使用splice()除去這一項。
var arr = [1, 2, 3, 2, 4, 1]; for (var i = 0; i < arr.length; i++) { if (arr.indexOf(arr[i]) !== i) { arr.splice(i,1); } } console.log(arr); // [1, 2, 3, 4]
- 利用對象的屬性名不能重復這一特性,創建一個對象,把數組中的值依次添加為對象的屬性,再使用Object.keys()得到包含所有屬性名的數組。但要註意對象的屬性名都是字符串形式,所以在本例中還要把它們轉回數字。
var arr = [1, 2, 3, 2, 4, 1];
- 先對數組進行排序,再循環,如果相鄰的兩項相同,則刪除一項,i--,再繼續對比。
var arr = [1, 2, 3, 2, 4, 1]; arr.sort(); for (var i = 0; i < arr.length; i++) {
- 最短的方法,使用new Set([...])。
var arr = [1, 2, 3, 2, 4, 1]; var newArr = new Set(arr);
console.log(newArr); // [1, 2, 3, 4];
5種方法實現數組去重