joy sahimar
joy sahimar

Reputation: 1

How to filter array by array using javascript with duplicate key

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

Answers (2)

Siva Kondapi Venkata
Siva Kondapi Venkata

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

Nick Vu
Nick Vu

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

Related Questions