为什么使用文字字符串与局部变量时我的结果不同

时间:2019-02-26 20:18:26

标签: javascript object ecmascript-6

我有以下循环。

for (var key in criteria) {

    var exists = Object.keys(item).some(function(k) {
        return item[k] === "Test";
    })
}

这很好用。根据项目数,我得到了15 trues。但是,如果我将其更改为以下内容:

for (var key in criteria) {

    var myString = item[key];

    var exists = Object.keys(item).some(function(k) {
        return item[k] === myString;
    });
}

我知道item[key]在循环中的某个时刻等同于“测试”,但不会产生相同的结果。实际上,它返回所有trues

条件是这样的对象:

{
  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"
}

1 个答案:

答案 0 :(得分:2)

您需要更改myString是什么-当前,它总是相等的,因为criteria当前不在其中。将myString更改为criteria[key]

for (var key in criteria) {

    var myString = criteria[key];

    var exists = Object.keys(item).some(k => item[k] === myString);

}