javascript - 更新两个 JavaScript 对象中匹配的键值

标签 javascript angularjs

我的要求是比较两个对象并将更新的值从第二个对象复制到第一个对象中。 例如:

$scope.obj1={"id" : 1, "name" : "java"}
$scope.obj2={"id" : 1, "name" : "java4you", "gender" : "male"}

compare(destination, bj1, obj2);

目标变量输出:

{"id" : 1, "name" : "java4you"}

以上两个对象包含相同的键,但值不同。我必须比较 obj1 和 obj2 并使用匹配的 obj2 值进行更新

最佳答案

您可以创建 obj1 的副本使用Object.assign()在一个新变量中,destination并迭代 obj2 的每个键使用Object.keys()array#forEach并检查 key 是否存在于destination中,如果存在,则更新 destination 中的值来自 obj2 的值

var obj1={"id" : 1, "name" : "java"},
    obj2={"id" : 1, "name" : "java4you", "gender" : "male"}

var updateObjectValue = (obj1, obj2) => {
  var destination = Object.assign({}, obj1);
  Object.keys(obj2).forEach(k => {
    if(k in destination) {
      destination[k] = obj2[k];
    }
  });
  return destination;
}
console.log(updateObjectValue(obj1, obj2));

关于javascript - 更新两个 JavaScript 对象中匹配的键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48585086/

相关文章:

javascript - 如何在 HH :MM AM format in Ionic 中显示日期时间

angularjs - 使用 Laravel 和 Latchet websocket 构建实时应用程序

javascript - ng-repeat 上的 AngularJs 过滤器

javascript - 将 Prototype 代码翻译成 Jquery 版本

javascript - Chrome 扩展程序 : Is it possible to create a TCP/Websocket based server on a folder?

javascript - 无法读取未定义的属性 '[function]'

javascript - AngularJS 有数据更新回调吗?如何在数据更改时手动更新页面?

javascript - Firestore/Javascript : How to get a document that is named as a date?

javascript - 停止谷歌地图空闲事件监听器

angularjs - 如何处理 Angular-ui-router 解析中的错误