在ES6 JS中解构对象时,可以使用{ a, b }
语法分别从该对象创建名为a
和b
的新变量。但是,据我所知,没有办法让对象的键自动创建具有这些名称的本地范围的变量。在以下示例中,我希望能够使用const {} = args;
的假设伪代码,它会自动生成const a
和const b
。
const bar = { a: 'apple', b: 'ball' };
const foo = (args) => {
const { a, b } = args;
console.log(a, b); // Great!
const {} = args; // I am aware this isn't valid syntax...
console.log(a, b) // Because of course, it doesn't work.
};
foo(bar);
原因纯粹是因为,在这个MCVE之外,我实际上正在使用带有几十个键的大量对象,并且我希望将其中的某些值传递到下一部分承诺链。我当然可以使用{ a: args.a, b: args.b }
,但我正在努力寻找最简洁,最干净的方法。我想我真正要求的是PHP的extract() - 类似语法,但在ES6 JS中。
这可能吗?
Ps,我知道如果对象的内容不受信任,这可能会被视为一个非常糟糕的主意。
PPS。我正在测试它的环境是Node 7.9.0
答案 0 :(得分:0)
如果您想对密钥执行某些操作但又不想定义密钥,为什么不使用Object.keys
或Object.entries
?
const foo = (args) => {
Object.entries(args).forEach(([key, value]) => {
console.log(key, value);
});
};
foo(bar);