如何在javascript中将所有属性破坏为本地let

时间:2017-05-27 14:29:51

标签: javascript ecmascript-6

说我有一个对象:

const ob = { a : 1, b : 'hello world', c : 3, d : false, e : { zn : 'nested value' }};

我想要一个单行,最好使用destruct在本地范围内获取5个新变量。

//do something with ob
//now i want to have 5 const/let defined in local scope
// such as, a =1, b = 'hello world', c = 3, d = false, e = { zn : 'nested value' }

EDIT1:我有很长的关键属性,有10个属性我想要使用它们,直接没有任何点,我发现写了10个冗长的变量名无聊......

2 个答案:

答案 0 :(得分:3)

就像在对象样式语法中包装所需的标识符一样简单

const {a, b, c, d, e} = {a: 1, b: 'hello world', c: 3, d: false, e: {zn: 'nested value'}};
a; // 1
b; // "hello world"
// etc

请注意,如果需要,您也可以进入数组或深入嵌套;

const [{f: {g}}] = [{f: {g: 1}}];
f; // undefined
g; // 1

此外,您可以在destructring

期间重命名标识符
const {old: now} = {old: 1};
old; // undefined
now; // 1

答案 1 :(得分:1)

如果你想缩短并将它们分配给变量,一种方法是使用eval。

但话又说回来,为什么你需要将它们创建为变量?

const ob = { a : 1, b : 'hello world', c : 3, d : false, e : { zn : 'nested value' }};

var i = 0;
for (let key in ob)
{
  eval(`var index${i} = "${ob[key]}"`);
  i++;
}


console.log(index0);
console.log(index1);
console.log(index2);