Javascript 将已定义特性的子集从一个对象复制到另一个对象

Javascript 将已定义特性的子集从一个对象复制到另一个对象,javascript,typescript,ecmascript-6,Javascript,Typescript,Ecmascript 6,我收到一个对象,它可以具有以下属性(例如): 我想将某些属性(例如,仅限状态和所有者)从该对象复制到另一个对象,但我只想在它们不是未定义或空的情况下复制它们(即,它们存在于原始对象上) 显然,我能做到: let copy = {}; if(orig.status) copy['status'] = orig.status; if(orig.owner} copy['owner'] = orig.owner; 或者 但有没有更简洁、更简单的方法来做到这一点呢。这是一个简单的例子,在我

我收到一个对象,它可以具有以下属性(例如):

我想将某些属性(例如,仅限状态和所有者)从该对象复制到另一个对象,但我只想在它们不是未定义或空的情况下复制它们(即,它们存在于原始对象上)

显然,我能做到:

  let copy = {};
  if(orig.status) copy['status'] = orig.status;
  if(orig.owner} copy['owner'] = orig.owner;
或者

但有没有更简洁、更简单的方法来做到这一点呢。这是一个简单的例子,在我的实际用例中,我需要复制大约10个属性

我用的是最新的打字稿

谢谢
Iain

我创建了一个包含所有字段的数组,这些字段都应该被复制,并用foreach对其进行迭代。对于所有这些属性,我检查原始对象中的属性既不是未定义的,也不是空的。如果两者都不是,我将属性复制到结果数组

让obj={
“状态”:“待定”,
“所有者”:“UID”,
“createdOn”:“2020-08-12”,
“modifiedOn”:“2020-08-12”,
“空”:空
};
let fields=['status','owner','false','nullish'];
让copy={};
fields.forEach(字段=>{
如果(对象[字段]!==未定义和对象[字段]!==空)
复制[字段]=对象[字段];
});

控制台日志(副本)是的,通过迭代对象键,我们可以在不引用“if”子句中的特定属性的情况下执行此操作:

此示例显示了用于删除空属性的搜索前后的对象:

让myObject={
“状态”:“待定”,
“所有者”:“UID”,
“blankAttribute”:空,
“createdOn”:“2020-08-12”,
“修改内容”:“2020-08-12”
}
log(“在空修剪之前:”,myObject);
key(myObject).forEach(key=>{
if(myObject[键]==null){
删除myObject[键]
}
});

log(“空修剪后:”,myObject) let copy = {}; if(orig.status) copy['status'] = orig.status; if(orig.owner} copy['owner'] = orig.owner;
  let copy = {};
  orig.status && copy.status = orig.status;
  orig.owner && copy.owner = orig.owner;