在两个数组中查找匹配值

时间:2017-12-13 00:35:07

标签: javascript arrays if-statement compare

所以我有这个价值,我从一个可以是单个项目或多个项目的API中回来。

我映射并返回我想要的值。

const value = JSONObject.map(data => {return data.value});

console.log(value); // ["value"]

或多个字符串,如果地图中存在多个值。

现在是我困惑的部分。

我有另一个本地JSON对象,我希望与api的值匹配。

for(i = 0; i < LocalJSONObject; i++;){
 if(value === LocalJSONObject[i].value){
 console.log("matching values")
 }
}

唯一的是“value”是一个可以包含一个单个字符串项或多个字符串项的数组。

我的理解是上面的if语句将数组与一个永远不会为真的字符串进行比较,因此它永远不会记录。

如何让它比较值数组中的值?

2 个答案:

答案 0 :(得分:1)

for (var lo = 0; lo < LocalJSONObject.length; ++lo) {
  for (var va = 0; va < value.length; ++va) {
    if (value[va] === LocalJSONObject[lo].value) {
      console.log('Matching values:', value[va]);
    }
  }
}

答案 1 :(得分:1)

是的,假设您的语句将数组与字符串进行比较是正确的,因为map方法返回一个数组。

要有效地解决问题,您可以使用Array.prototype.includes()方法获得结果。

for(i = 0; i < LocalJSONObject; i++;){
 if(value.includes(LocalJSONObject[i].value)){
   console.log("matching values")
 }
}