【发布时间】:2018-09-03 21:08:18
【问题描述】:
有一个输入对象需要复制到另一个对象是很常见的。通常您需要复制一些属性,最终得到一个非常相似但属性较少的对象。
假设你有这个输入对象:
// an object with data
let oldObject = {
a: 'this is a',
b: 'this is b',
c: 'this is c',
d: 'this is d'
}
我就是这样做的:
let myNewObject = {
a: oldObject.a,
b: oldObject.b,
c: oldObject.c
}
这是我一直在使用的:
// new version
let { a, b, c } = oldObject
let myNewObject = { a, b, c };
这个我开始用了,好像没问题:
// newer version
let myNewObject = { a, b, c } = oldObject;
较新版本的问题在于我声明了变量 a、b 和 c。在这种情况下没有问题 (almost),但是如果它们的名称是 input、output、temp、i 或任何其他可能已经在作用域中声明的变量的通用名称怎么办.
所以解决方案很棒,但更好的是这些变量是在该行中以某种方式创建和销毁的,而在其他地方不可用。 myNewObject 当然应该可以访问。
我尝试将它包装在这样的函数中,但完全没有运气:
let myNewObject = (function() { return { a, b, c } = oldObject })();
let myNewObject = (function() { let temp = { a, b, c } = oldObject; return temp; })();
所以我不确定实现这一目标的最佳方法是什么,我已经接近了,但我错过了一些东西。
【问题讨论】:
标签: node.js variable-assignment destructuring