Javascript JS:将一个对象分解为另一个具有重命名属性的对象
在JS中是否可以执行以下操作Javascript JS:将一个对象分解为另一个具有重命名属性的对象,javascript,ecmascript-6,javascript-objects,destructuring,Javascript,Ecmascript 6,Javascript Objects,Destructuring,在JS中是否可以执行以下操作 const obj = { a: 1, b: 2, c: 3 }; const copyObj = {...{ a: x, b: y, c: z } = obj }; 我知道我可以做到这一点: const { a: x, b: y, c: z } = obj; const copyObj = { x, y, z }; 但这不是我想要的。有什么建议吗?您可以使用一个函数获取想要的和重命名的属性 const 重命名=({a:x,b:y,c:z})=>({x,y
const obj = { a: 1, b: 2, c: 3 };
const copyObj = {...{ a: x, b: y, c: z } = obj };
我知道我可以做到这一点:
const { a: x, b: y, c: z } = obj;
const copyObj = { x, y, z };
但这不是我想要的。有什么建议吗?您可以使用一个函数获取想要的和重命名的属性
const
重命名=({a:x,b:y,c:z})=>({x,y,z}),
obj={a:1,b:2,c:3},
copyObj=重命名(obj);
console.log(copyObj)代码>您可以使用
constobj={a:1,b:2,c:3}
常量copyObj={…({a:x,b:y,c:z})=>({x,y,z}))(obj}
console.log(copyObj)
为什么不能使用第二个?您也可以执行const{a,b,c}=obj;constcopyobj={x:a,y:b,z:c}
@Dilshan并不是我不能/不会使用它,我只是想知道是否有更“干燥”的方法。这是一个好奇心驱动的/理论性的问题。@Bergi我知道这种方法,我在问题的描述中也提到过它。@GenesisAlgorithms唯一不重复属性名的方法是使用平凡的const copyObj={x:ob.a,y:obj.b,z:obj.c}代码>。没有比这更简单的了。谢谢!我可能不会使用它,但它仍然是我问题的有效答案。它是一种不会在函数外创建(多余)变量的模式。函数已返回一个新对象。传播是没有必要的。