如何将所有对象字段复制到具有相同名称的变量中?

时间:2019-06-10 06:59:30

标签: javascript object

JavaScript对象包含一组键/值对。

给出对象,是否可能每个这样的对象对创建一个与其键名相同的变量,并在对象中分配该键的值?

还可以在JavaScript ES5中实现吗?

例如,如果对象是

var obj = {a: 'aaa', b: 'bbb'}

然后,此过程应创建两个变量:

var a = 'aaa';
var b = 'bbb';

3 个答案:

答案 0 :(得分:-2)

如果您事先知道密钥,则可以进行解构(仅适用于ES6):

const obj = { foo: 'foo', bar: 'bar' };
const { foo, bar } = obj;
console.log(foo);
console.log(bar);

不建议使用此方法,因为全局变量不好,但是您可以将对象分配给window,然后将其属性引用为独立变量。这可以在ES5中使用polyfill做到:

const obj = { foo: 'foo', bar: 'bar' };
Object.assign(window, obj);
console.log(foo);
console.log(bar);

但是动态变量名通常不是一个好主意。如果可能的话,最好只使用最初拥有的对象。

甚至不推荐使用,但由于它可以回答问题,因此您可以eval(但请不要这样做):

(() => {
  const obj = { foo: 'foo', bar: 'bar' };
  for (const [prop, val] of Object.entries(obj)) {
    eval(`var ${prop} = val`);
  }
  console.log(foo);
  console.log(bar);
})();

如果需要,也可以在ES5中完成上述操作,但不必这样做-这是一个X / Y问题

答案 1 :(得分:-4)

您可以使用解构

 const obj = {a : "aaaa", b : "bbbb"};
 
 
 //use destructuring
 
const { a } = obj;

console.log(a);

答案 2 :(得分:-4)

import * as firebase from 'firebase';