0

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];

2 Answers 2

1

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);

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks for answer. but sorry, result not expected.
Ah I misunderstood your question, let me try to arrange my answer again @joysahimar
0

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));

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.