Javascript:检查数组的每个值是否包含在字符串中?

时间:2018-02-09 17:39:30

标签: javascript arrays

我有一个JS函数,它根据用户选择的过滤器创建一个数组(这部分工作正常),然后我有另一个函数(下面)循环遍历这个数组,如果值包含在字符串,如果不是,则为false。

var testString = "winter casual";
var valArray = ["winter", "casual"];


function filterArray(...values){ 
  for (i=0; i<values.length; i++){
    if (testString.includes(values[i])){
      console.log(true);
    } else {
      console.log(false);
    }
  }

 filterArray(valArray);

但是,我单击1个过滤器按钮将“winter”添加到values数组并返回“true”,但是然后我单击另一个来添加casual,它返回false,即使random也包含在字符串中。我有控制台记录值[],以确保“冬天”和“随意”都在我的数组中,它们是。

2 个答案:

答案 0 :(得分:0)

...values替换为values作为参数:

var testString = "winter casual";

function filterArray(values){ 
  for (i=0; i<values.length; i++){
    if (testString.includes(values[i])){
      console.log(true);
    } else {
      console.log(false);
    }
  }
}
      
filterArray(['winter']);

filterArray(['winter', 'casual']);

答案 1 :(得分:0)

我不太确定这是否是您正在寻找的,因为您的函数实际上并没有返回任何内容,但这是一个非常有用的相当简单的函数:

const containsAll = (str, strs) => strs.every(s => str.includes(s))

console.log(containsAll("winter casual", ['winter'])) //=> true
console.log(containsAll("winter casual", ['winter', 'casual'])) //=> true
console.log(containsAll("winter casual", ['winter', 'casual', 'medium'])) //=> false