2017-04-13 39 views
0

我想刪除數組的數組元素刪除陣列(不記得它是如何在數學命名),例如:使用Javascript - 從陣列

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

問候

+0

它命名爲矩陣數學 –

+0

'ARR3 = arr1.filter(項目=> arr2.includes! (item))' – pawel

+0

我覺得這有點重複[this](http://stackoverflow.com/questions/1187518/javascript-array-difference) –

回答

3

Array#filter可能會有所幫助。

var arr1 = ['uno', 'dos', 'tres', 'cuatro'], 
 
    arr2 = ['dos', 'cuatro'], 
 
    arr3 = arr1.filter(v => arr2.indexOf(v) == -1); 
 
    
 
    console.log(arr3);

+0

我希望它有一些本地功能,但謝謝! –

+0

@JimiAlvaro原生函數? 'Array#filter'是definetely原生的(: –

2

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

 
arr1 = arr1.filter(function(item){ 
 
    return arr2.indexOf(item) < 0; 
 
}); 
 
console.log(arr1)

0

你可以使用Array#includes並採取否定的結果。

var arr1 = ['uno', 'dos', 'tres', 'cuatro'], 
 
    arr2 = ['dos', 'cuatro'], 
 
    arr3 = arr1.filter(v => !arr2.includes(v)); 
 
    
 
console.log(arr3);

0

給你,應該是一個現成的功能:

function substractArrays (arr1, arr2) { 
    if (arr2.length) { 
     return arr1.filter(item => { 
     return !arr2.some(elem => { 
      return item.id === elem.id; 
     }); 
     }); 
    } else { 
     return arr1; 
    } 
}