【问题标题】:How to find object properties with the same values among javascript objects?如何在 javascript 对象中查找具有相同值的对象属性?
【发布时间】:2017-09-03 13:07:14
【问题描述】:

我想在 javascript 对象中找到相同的值(也许以后还要添加一个 min , max 统计数据) 我一开始就卡住了,因为我的代码返回了一些意外的输出 (PS我不是在找共同的属性,而是在寻找具有相同值的共同属性)

var obj1 = { "oranges": 5, "apples": 3, "peaches": 1 };
var obj2 = { "oranges": 4, "apples": 3, "peaches": 0 };
var obj3 = { "oranges": 5, "apples": 3, "peaches": 5 };
var obj_common = {};

for (var property in obj1) {
  if (obj1[property] = obj2[property])
    obj_common[property] = obj1[property];
}

console.log(obj_common);

【问题讨论】:

标签: javascript object for-loop


【解决方案1】:

使用===== 进行比较。

说明您的代码的作用: (obj1[property] = obj2[property]) 行将 obj2[property] 的值分配给 obj1[property]。因为 javascript 中的赋值表达式返回分配的值,所以对于 "oranges""apples"(因为 43 是真值)和 false 对于 "peaches"(因为 @ 987654333@ 是一个假值)。

【讨论】:

    【解决方案2】:

    请将 if 语句中的 = 改为 ==

    • = 将右侧的值赋给左侧的变量
    • == 将比较两边的值(例如 1=='1' 给出真值)
    • === 如果要检查值及其类型,请使用三重 =(1==='1' 为 false)

    var obj1 = { "oranges": 5, "apples": 3, "peaches": 1 };
    var obj2 = { "oranges": 4, "apples": 3, "peaches": 0 };
    var obj3 = { "oranges": 5, "apples": 3, "peaches": 5 };
    var obj_common = {};
    
    for (var property in obj1) {
      if (obj1[property] == obj2[property])
        obj_common[property] = obj1[property];
    }
    
    console.log(obj_common);

    【讨论】:

      猜你喜欢
      • 2013-10-14
      • 1970-01-01
      • 2018-11-03
      • 2017-02-27
      • 2014-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      相关资源
      最近更新 更多