javascript - 更新具有匹配属性的对象并忽略新属性

标签 javascript typescript ecmascript-6

我正在使用 Typescript,我想用另一个对象更新一个对象,但只在匹配的键上。

// Destination
objectOne = {
  a: 0,
  b: 0,
};

// Source
objectTwo = {
  a: 1,
  b: 1,
  c: 1,
};

// Expected
result = {
  a: 1,
  b: 1,
};

// Current solution
const current = {};
Object.keys(objectTwo).forEach(key => key in objectOne ? current[key] = objectTwo[key] : null);

console.log(current);

是否有单行代码(即不是迭代键的自定义函数)会忽略 c 中的属性来源 ?我还想避免使用 lodash 或 JQuery 等库。

重复编辑 我的问题不是关于合并两个对象,我的问题是关于忽略第二个对象中不在第一个对象中的字段。

最佳答案

过了一段时间没有答案,似乎最短的解决方案是我自己提供的:

Object.keys(newObj).forEach(key => key in oldObj? result[key] = newObj[key] : null)

关于javascript - 更新具有匹配属性的对象并忽略新属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51206836/

相关文章:

Angular : how to trigger bindings manually?

javascript - 比较 2 个对象数组是否匹配,无论其在 lodash 中的索引如何?

javascript - TS : Deconstructing an array containing an object and a function (setter) only works with @ts-ignore

javascript - 单击 Accordion 面板个人 ID 时如何打开新图像(同一窗口)

angular4.x,ngOnChanges 方法的参数

javascript - 有什么理由再使用 var 了吗?

javascript - ECMAScript 6 中 "extending"原型(prototype)的语法

javascript - 将图像 URL 转换为 dataURL - Javascript

javascript - 如何从 JavaScript 中的字符串中去除 HTML 标签?

Javascript 空间函数