記錄陣列去重的幾種方法

2022-04-06 07:54:33 字數 1861 閱讀 1128

1、雙層迴圈去重

先定義原始陣列第乙個元素的陣列,遍歷原始陣列,新陣列與原始陣列進行比較

如果不重複就新增到新陣列中,最後返回新陣列res

let arr = [0,2,3,4,4,0,2];

function

unique1(ary)

}if(flag)res.push(arr[i]);

}return

res;

}console.log(unique1(arr));

//[0, 2, 3, 4]

2、使用indexof方法去重

indexof()方法可返回某個指定的元素在陣列中首次出現的位置

首先定義乙個空陣列res,然後呼叫indexof方法對原來的陣列進行遍歷判斷,

如果元素不在res中,則將其push進res中,最後將res返回即可獲得去重的陣列

let bosh = [1,2,3,3,2,1,1,2,3,4,5,6,7];

function

unique2(a)

}return

temp;

}console.log(unique2(bosh));

//[1, 2, 3, 4, 5, 6, 7]

3、相鄰元素去重(排序後去重)

首先呼叫了陣列的排序方法sort(),然後根據排序後的結果進行遍歷及相鄰元素對比

如果相等則跳過改元素,直到遍歷結束

let adjoin = [64,5,4,2,4,5,2];

function

unique3(arr)

}return

empt;

}console.log(unique3(adjoin));

//[2, 4, 5, 64]

4、利用物件屬性去重

建立空物件,遍歷陣列,將陣列中的值設為物件的屬性,並給該屬性賦初始值1,每出現一次,對應的屬性值增加1

這樣,屬性值對應的就是該元素出現的次數

let sz = [6,20,0,20,9,6,0];

function

unique4(arr);

for(let i=0;i)

else

}return

item;

}console.log(unique4(sz)); //

[6, 20, 0, 9]

5、利用indexof + filter

利用indexof檢測元素在陣列中第一次出現的位置是否和元素現在的位置相等,如果不等則說明該元素是重複元素,然後把重複的元素過濾掉

let filt = [0,99,33,22,0,44,33];

function

unique5(arr));

}console.log(unique5(filt));

//[0, 99, 33, 22, 44]

6、使用es6中set與解構賦值去重

set的特性就是值是唯一的,不能重複

let es = [1,2,2,3,4,1,3,5];

function

unique6(arr)

console.log(unique6(es));

//[1, 2, 3, 4, 5]

7、使用es6中set與array.from去重

array.from可以將類陣列轉為陣列

let array = [0,3,0,5,0,6,5];

function

unique7(arr)

console.log(unique7(array));

//[0, 3, 5, 6]

陣列去重的幾種方法

實現思路 新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中 注意點 判斷值是否在陣列的方法 indexof 是ecmascript5 方法,ie8以下不支援,需多寫一些相容低版本瀏覽器 最簡單陣列去重法 function unique1 array return n 實現思路 新建一js物件...

陣列去重的幾種方法

記錄一些陣列去重的方法,如果有錯誤的地方,還望指正 1.利用es6中的set 去重特性 const arr 1,2,3,6,8,2,9,5,6,4,9 function uniq arr const resultarr1 uniq arr console.log resultarr1 2.利用inc...

陣列去重的幾種方法

function unique arr let arr 1,2,3,1,2,2,a b c c a 4 4,false,false,undefined,undefined,null,null nan,nan,console.log unique arr 1,2,3,a b c 4,false,und...