如何根据两个对象的键比较它们?

时间:2018-08-21 14:06:19

标签: javascript

我想使用其键比较2个对象。如果对象具有相同的键,请检查其值。如果相同,则在新对象中保存该对的一个实例,否则在新对象中保存值为1的对。 这是我的尝试:

var sameKey = false;
function hasSameProps( obj1, obj2 ) {
  for (var x in obj1){
        if (obj2.hasOwnProperty(x)){ // check if the objects have same key 
          samekey = true;
        }
        if (sameKey){

        }
  }
}
var obj1 = {'a':0,'s':0};
var obj2 = {'a':0,'s':1};
hasSameProps( obj1, obj2 ); // should return new Object { 'a':0,'s':1};

3 个答案:

答案 0 :(得分:0)

您可以在if (obj2.hasOwnProperty(x))内添加逻辑,例如:

if (obj2.hasOwnProperty(x)) {
   newObj[x] = obj1[x] > obj2[x] ? obj1[x] : obj2[x];
}

var sameKey = false;

function hasSameProps(obj1, obj2) {
  var newObj = {}, samekey;
  for (var x in obj1) {
    if (obj2.hasOwnProperty(x)) {
      newObj[x] = obj1[x] > obj2[x] ? obj1[x] : obj2[x];
    }
  }
  return newObj;
}
var obj1 = {
  'a': 0,
  's': 0
};
var obj2 = {
  'a': 0,
  's': 1
};
console.log(hasSameProps(obj1, obj2));

答案 1 :(得分:0)

function hasSameProps( obj1, obj2 ) {
  var returnValue = {};
  for (var x in obj1) {
        returnValue[x]  = obj1[x];
        if( obj2.hasOwnProperty(x)){ 
          if(obj2[x] == 1) {
            returnValue[x]  = obj2[x];
          }
        }
  }
  return returnValue;
}
var obj1={'a':0,'s':0};
var obj2={'a':0,'s':1};

var obj3  = hasSameProps( obj1, obj2 ); 
console.log(obj3);

答案 2 :(得分:0)

因此:键和值都相同,放入新对象;键相同,但不是值,然后放入值1的新对象?

git rev-parse --show-toplevel