我有以下循环。
for (var key in criteria) {
var exists = Object.keys(item).some(function(k) {
return item[k] === "Test";
})
}
这非常有效。根据项目的数量,我得到了 15 个 true
。但是,如果我将其更改为以下内容:
for (var key in criteria) {
var myString = item[key];
var exists = Object.keys(item).some(function(k) {
return item[k] === myString;
});
}
我知道 item[key]
在我的循环中的某个点将等同于“测试”,但它不会产生相同的结果。事实上它返回所有 true
,
Criteria 是一个像这样的对象:
{
habitat_type: "Mangroves",
issue_specific_terms: "Test"
}
Item 也是一个对象,如:
{
habitat_type: "Streams and rivers",
cci: "Low productivity/loss of agriculture",
intervention_type: "Restoration",
issue_specific_terms: "Test",
country: "United States of America"
}
最佳答案
您需要更改 myString
是什么 - 目前,它总是相等的,因为 criteria
当前没有出现。将 myString
更改为 criteria[key]
:
for (var key in criteria) {
var myString = criteria[key];
var exists = Object.keys(item).some(k => item[k] === myString);
}
关于javascript - 为什么在使用文字字符串和局部变量时我的结果不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54893447/