如何将匹配属性从一个对象复制到另一个对象

sre*_*moh 9 typescript

我有这两个对象:

obj1 = {a: '', b: ''}
obj2 = {a: '1', b: '2', c: '3'}
Run Code Online (Sandbox Code Playgroud)

我想所有匹配的特性,从复制obj2obj1.在Typescript中这样做的最佳方式是什么?

bas*_*rat 14

什么是打字稿中最好的方法

与JavaScript相同.只是用Object.keys

以下代码将东西从obj2移动到obj1:

let obj1 = {a: '', b: ''}
let obj2 = {a: '1', b: '2', c: '3'}

Object.keys(obj2).forEach(key=>obj1[key]=obj2[key]);
Run Code Online (Sandbox Code Playgroud)

对于任何条件,如不能已经在obj1等,你可以做到这一点检查 forEach

  • 也许 TSC 变得更加严格,但我收到此代码的类型错误 (ts:7053),抱怨对象类型上没有索引器。 (7认同)
  • 您是否认为必须有一些条件语句来检查obj1中是否存在键。例如obj1.hasOwnProperty(key); (2认同)
  • 这个答案中的代码不完整,因为它忽略了OP仅复制匹配属性的请求。应添加以下内容:`if (obj1 中的 key)`。 (2认同)

iSt*_*tar 6

如果您不介意在中obj2不存在任何键,obj1则使用Object.assign(obj1, obj2)以下更清晰的方法: