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

标签 javascript object ecmascript-6

我有以下循环。

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/

相关文章:

javascript - 将平面对象数组转换为嵌套对象

java - 链接包 : Add three Circle objects into the LinkedBag

javascript - babel 编译 es6 类,函数未定义

javascript - 将嵌套数组值映射到 Map,具有按数组索引设置 Map 值的功能,这将通过引用反射(reflect)在嵌套数组中

javascript - 调用按钮单击功能时保持类 this

javascript - 如果已定义,为什么 Promise.all() 会触发 Array.prototype.then?

javascript - 使用javascript自动计算输入值的总和

javascript - 更改命令 text-align :center is relative to in css

javascript - 打开全宽/全高弹出窗口

javascript - WMS 叠加层在 Google map API 中错位