Javascript 如何将一个对象的现有属性复制到另一个对象?
考虑以下代码:Javascript 如何将一个对象的现有属性复制到另一个对象?,javascript,angular,typescript,Javascript,Angular,Typescript,考虑以下代码: const x={name:"a"}; const y={name:"b", fname:"c"}; const z = Object.assign(x,y); //output: z={name:"b", fname:"c"} //expected: {name:"b"} 如何达到预期的效果?您可以使用循环 const x={name:“a”}; 常数y={name:“b”,fname:“c”}; 常数z={}; 对于(让输入x)z[key]=y.hasOwnPropert
const x={name:"a"};
const y={name:"b", fname:"c"};
const z = Object.assign(x,y); //output: z={name:"b", fname:"c"}
//expected: {name:"b"}
如何达到预期的效果?您可以使用循环
const x={name:“a”};
常数y={name:“b”,fname:“c”};
常数z={};
对于(让输入x)z[key]=y.hasOwnProperty(key)?y[键]:x[键];
控制台日志(z)代码>使用扩展运算符
Object.assign({name:x.name})
@SachilaRanawaka:如果你想明确一点,{name:x.name}
就足够了-Object.assign
在这里没有用处。请注意,x是动态的。我不知道它的属性。为什么angular中的Object.assign()和中的不一样?你说“不起作用”是什么意思<代码>对象。分配
不能删除属性;如果使用Object.assign
,则始终会同时使用name
和fname
。相同但较短:Object.keys(x)。reduce((a,k)=>(a[k]=y[k],a),{})
:)@Amadan-即使我考虑过这一点。然而,我担心这件事的复杂性。虽然它仍然是线性的,但时间是双倍的。你怎么看?如果我认为它比你的好,我会做出新的回答。所以,如果有人想打高尔夫球,或者真的更喜欢一个表达而不是几个陈述,我只是作为一种选择来评论。@Amadan-同意。谢谢,伙计:)@Amadan-这是另一个想法,因为OP试图使用对象。赋值
,如果值确实存在于x
中,并且不存在于y
中,那么在这种情况下,x
中的值将得到尊重。你的想法是什么?OP不想要所有的属性,只想要普通的属性。::glups::这是真的,对不起
Object.prototype.customAssign = function(x,y){
let item = {};
Object.keys(x).forEach(function(a,b){
destiKeys.indexOf(a)>=0? item[a] = y[a] : null;
});
return item;
};
const x={name:"a"};
const y={name:"b", fname:"c"};
const z = Object.customAssign(x,y); //output: z = {name:"b"}
z={...x,..y} //All properties of x + All properties of y
//y properties replace the sames properties of x