2017-09-03 33 views
0

我想找到那些JavaScript对象(或许以后还可以添加在最小值,最大值统计) 我被困在一开始为我的代码返回一些意想不到的输出 (PS我不是在寻找中相同的值共同的特性,但对于具有相同值的共同属性)如何找到与JavaScript对象之间的相同的值对象的属性?

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);

+5

单 “=” 被以变量,分配值==和===是逻辑(比较)操作符。 – Adriani6

+0

的可能的复制[如何找到JavaScript对象之间的共同特性(https://stackoverflow.com/questions/23199349/how-to-find-common-properties-between-javascript-objects) – pedromss

+0

THX,我看到了这个问题,但我不寻找共同的属性,但对于具有相同值的常见属性:) – giorgio79

回答

3

使用=====用于比较。

说明你的代码做: 线(obj1[property] = obj2[property])分配的obj2[property]obj1[property]值。因为赋值表达式在javascript返回所分配的值,该表达式的true"oranges""apples"(因为43是truthy值)和用于false"peaches"(因为0是falsy值)。

0

请更改=里面的if语句

  • =将分配在右边的值在左侧的变量
  • ==将在双方的比较值(如1 = = = = '1' 给出真)
  • ===使用三联=如果你想检查这两个值和其类型(1 === '1' 作假)

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);

相关问题