2017-08-09 74 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); 
} 
相关问题