Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将一个对象的现有属性复制到另一个对象?_Javascript_Angular_Typescript - Fatal编程技术网

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