所以我有这个价值,我从一个可以是单个项目或多个项目的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语句将数组与一个永远不会为真的字符串进行比较,因此它永远不会记录。
如何让它比较值数组中的值?
答案 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")
}
}