0

I want to delete elements from array in array (can't remember how it is named in math), for example:

var arr1 = ['uno', 'dos', 'tres', 'cuatro'],
    arr2 = ['dos', 'cuatro'],
    arr3 = arr1.without(arr2);
//arr3 === ['uno', 'tres']

Greetings

4 Answers4

3

Array#filter may be helpful.

var arr1 = ['uno', 'dos', 'tres', 'cuatro'],
    arr2 = ['dos', 'cuatro'],
    arr3 = arr1.filter(v => arr2.indexOf(v) == -1);
    
    console.log(arr3);
kind user
  • 34,867
  • 6
  • 60
  • 74
2

var arr1 = ['uno', 'dos', 'tres', 'cuatro'];
var arr2 = ['dos', 'cuatro'];

arr1 = arr1.filter(function(item){
  return arr2.indexOf(item) < 0;
});
console.log(arr1)
Mamun
  • 62,450
  • 9
  • 45
  • 52
0

You could use Array#includes and take the negated result.

var arr1 = ['uno', 'dos', 'tres', 'cuatro'],
    arr2 = ['dos', 'cuatro'],
    arr3 = arr1.filter(v => !arr2.includes(v));
    
console.log(arr3);
Nina Scholz
  • 351,820
  • 24
  • 303
  • 358
0

Here you are, a ready function for that:

function substractArrays (arr1, arr2) {
    if (arr2.length) {
      return arr1.filter(item => {
        return !arr2.some(elem => {
          return item.id === elem.id;
        });
      });
    } else {
      return arr1;
    }
}
Alex Link
  • 1,110
  • 11
  • 13