在ES6中解构大型对象时自动分配变量

问题描述

我认为我对ES6中的解构非常了解。示例:

const obj = {
  foo: 'String1',bar: 'String2'
}

let { foo,bar } = obj

console.log(foo) //Prints "String1"

很简单。

但是,我有一个大对象,它具有动态名称的动态数量属性。我希望能够自动分配它们。

示例对象:

const obj = {
    a: 'String1',b: 'String2',c: 'String3',// ....
    y: 'String25',z: 'String26',} 

我没有声明每个变量,而是尝试:

// Instead of 
// { a,b,c,d,so_on,y,z } = obj 
// I try: 

let { ...obj } = obj

但是出现此错误Identifier 'obj' has already been declared

有什么更好的方法解决这个问题?

解决方法

只要标识符与您要解构的对象的标识符不同,它就可以按照您的预期工作。

const obj = {
    a: 'String1',b: 'String2',c: 'String3',// ...
    y: 'String25',z: 'String26',} 

const { a,b,...rest } = obj
// const a: 'String1'
// const b: 'String2'
// const rest: {
//     c: string;
//     ...
//     y: string;
//     z: string;
// }

请参见playground中的示例。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...