Reputation: 1
I have 2 array and i will filtered but key duplicate.
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];
Upvotes: 0
Views: 217
Reputation: 11011
Use set
and 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));
Upvotes: 0
Reputation: 15540
You can check the below implementation. We should not modify the original data as well, that's why I've cloned your array for the array modification instead of changing items on the original one.
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);
Upvotes: 1