我有 2 個陣列,我將過濾但鍵重復。
const arr1 = [1, 2, 3, 3, 3, 4];
const arr2 = [1, 3];
function filteredArray(arr1, arr2) {...}
const newArr = filteredArray(arr1, arr2);
console.log(newArr);
// result: [2, 3, 3, 4];
uj5u.com熱心網友回復:
您可以檢查以下實作。我們也不應該修改原始資料,這就是為什么我克隆了您的陣列以進行陣列修改,而不是更改原始資料上的專案。
const arr1 = [1, 2, 3, 3, 3, 4];
const arr2 = [1, 3];
function filteredArray(arr1, arr2) {
const newArr1 = [...arr1] //clone the array to keep the original array data
const set2 = new Set(arr2)
for(let i = 0; i < newArr1.length; i ) {
if(set2.has(newArr1[i])) {
set2.delete(newArr1[i])
newArr1.splice(i,1)
}
}
return newArr1
}
const newArr = filteredArray(arr1, arr2);
console.log(newArr);
uj5u.com熱心網友回復:
您可以迭代,如果它們存在,則將arr2
其洗掉:arr1
const arr1 = [1, 2, 3, 3, 3, 4];
const arr2 = [1, 3];
function filteredArray(arr1, arr2) {
arr2.forEach(v => {
i = arr1.indexOf(v);
if (i >= 0) arr1.splice(i, 1)
});
return arr1;
}
console.log(filteredArray(arr1, arr2))
uj5u.com熱心網友回復:
使用set
和filter
function filteredArray(arr1, arr2) {
const set = new Set(arr2);
return arr1.filter(item => !set.delete(item));
}
const arr1 = [1, 2, 3, 3, 3, 4];
const arr2 = [1, 3];
console.log(filteredArray(arr1, arr2));
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/497310.html
標籤:javascript 数组