首页 > 解决方案 > 如何过滤掉数组中不包含特定值的单词?

问题描述

我正在尝试制作这个脚本,我可以在其中填写我想从 array2 中过滤掉的 array1 中的单词。所以我想得到一个新数组,其中只有array2中的单词不包含array1中的任何值。

这就是我现在所拥有的,但它不能正常工作,因为循环多次通过它,最后每个单词都多次进入它。现在我在 array1 中有 3 个值,每个单词都会被检查 3 次,所以最后每个单词都会进入最终数组。我过滤掉了重复的单词

有人对此有解决方案吗?JS小提琴链接:https ://jsfiddle.net/45z1mpqo/

var array2 = ["January", "February", "March", "April", "May", "June"]
var array1 = ["uary", "May", "December"];
var notMatched = [];
let counter = 0;

for(var b = 0; b < array1.length; b++) {

    for(var i = 0; i < array2.length; i++) {

      if(array2[i].indexOf(array1[b]) != -1)
        { 
        //console.log(stringxa[i]);
        }
        else{
        notMatched[counter] = array2[i];
        counter++;
        }
    }
}
//this filter will remove duplicate elements from array
var unique = notMatched.filter(function(elem, index, self) {
    return index == self.indexOf(elem);
});
document.getElementById("text").innerHTML = unique;


<p id='text'>hi</p>

标签: javascript

解决方案


您可以使用filter()on并检查字符串中是否包含array2任何值array1some()

var array2 = ["January", "February", "March", "April", "May", "June"]
var array1 = ["uary", "May", "December"];


let res = array2.filter(x => array1.some(a => x.includes(a)));

console.log(res)


推荐阅读