2017-08-09 72 views
1

我在比較兩個數組的元素並過濾出匹配值時遇到了一些問題。我只想返回不包含在wordsToRemove之內的數組元素。使用.filter比較兩個數組並返回不匹配的值

var fullWordList = ['1','2','3','4','5']; 
var wordsToRemove = ['1','2','3']; 

var filteredKeywords = fullWordList.forEach(function(fullWordListValue) { 
    wordsToRemove.filter(function(wordsToRemoveValue) { 
     return fullWordListValue !== wordsToRemoveValue 
    }) 
}); 

console.log(filteredKeywords); 

回答

3

您可以使用filterincludes來實現這一目標:

fullWordList

var fullWordList = ['1','2','3','4','5']; 
 
var wordsToRemove = ['1','2','3']; 
 

 
var filteredKeywords = fullWordList.filter((word) => !wordsToRemove.includes(word)); 
 

 
console.log(filteredKeywords);

1

forEach不是必需的,用filterfullWordListindexOf()在功能filter()檢查如果wordsToRemove中存在號碼或不存在。

var fullWordList = ['1','2','3','4','5']; 
 
var wordsToRemove = ['1','2','3']; 
 

 
var newList = fullWordList.filter(function(x){ 
 
    return wordsToRemove.indexOf(x) < 0; 
 
}) 
 
console.log(newList);

1

使用過濾器,包括執行此

var fullWordList = ['1','2','3','4','5']; 
 
var wordsToRemove = ['1','2','3']; 
 

 
var newList = fullWordList.filter(function(word){ 
 
    return !wordsToRemove.includes(word); 
 
}) 
 
console.log(newList);

1

這是很容易使用Array.prototype.filter做到:

var fullWordList = ['1','2','3','4','5']; 
var wordsToRemove = ['1','2','3']; 

var filteredKeywords = fullWordList.filter(
    word=>!wordsToRemove.includes(word) 
//or 
//word=>wordsToRemove.indexOf(word)<0 
); 
1

也許你可以試試

var fullWordList = ['1','2','3','4','5']; 
var wordsToRemove = ['1','2','3']; 
var match = []; 

for(let word of fullWordList){ 
    if(!wordsToRemove.find((val) => val == word))match.push(word); 
} 
相關問題