2017-02-13 53 views
-1

如何比较两个数组,如果找到相同的键,然后从第二个数组中获取值并将其分配给第一个数组。结果是使用第一个数组。比如我有下面的数组:比较两个数组,如果发现同一个键获得第二个数组的值

var compareit = { 
      firstArray : { 
       'color': 'blue', 
       'width': 400, 
       'height': 150, 
      }, 
      secondArray: { 
       'color': 'red', 
       'height': 500, 
      }, 
    }; 

的目标是什么,我想要的结果:{'color': 'red', 'width': '400', 'height': '500'};

真我的任何帮助赞赏...谢谢:)

回答

1

你可以使用Object.assign()将一个或多个源对象的值复制到目标对象。

var compareit = { 
 
    firstArray: { 
 
    'color': 'blue', 
 
    'width': 400, 
 
    'height': 150, 
 
    }, 
 
    secondArray: { 
 
    'color': 'red', 
 
    'height': 500, 
 
    }, 
 
}; 
 

 
Object.assign(compareit.firstArray, compareit.secondArray); 
 
console.log(compareit.firstArray)

如果你不想操纵现有的对象compareit.firstArray

var compareit = { 
 
    firstArray: { 
 
    'color': 'blue', 
 
    'width': 400, 
 
    'height': 150, 
 
    }, 
 
    secondArray: { 
 
    'color': 'red', 
 
    'height': 500, 
 
    }, 
 
}; 
 

 
var obj = {}; 
 
Object.assign(obj, compareit.firstArray, compareit.secondArray); 
 
console.log(obj, compareit)

+0

非常感谢你:) –

0

你可以通过第一阵列在性能循环,并检查如果第二个数组中存在相同的属性。

var compareit = { 
 
    firstArray: { 
 
    'color': 'blue', 
 
    'width': 400, 
 
    'height': 150, 
 
    }, 
 
    secondArray: { 
 
    'color': 'red', 
 
    'height': 500, 
 
    }, 
 
}; 
 
var result = {}; 
 
for (var key in compareit.firstArray) { 
 
    if (key in compareit.secondArray) { 
 
    result[key] = compareit.secondArray[key]; 
 
    } else { 
 
    result[key] = compareit.firstArray[key]; 
 
    } 
 
} 
 
console.log(result);

+0

非常感谢你:) –

0

var compareit = { 
 
      firstArray : { 
 
       'color': 'blue', 
 
       'width': 400, 
 
       'height': 150, 
 
      }, 
 
      secondArray: { 
 
       'color': 'red', 
 
       'height': 500, 
 
      }, 
 
    }; 
 
var result, 
 
    compareObjects=function(comp){ 
 
     return Object.assign(comp.firstArray, comp.secondArray); 
 
    }; 
 

 
result=compareObjects(compareit); 
 
console.log(result);

+0

非常感谢你:) –