JavaScript数组推送键值

dar*_*ryl 27 javascript arrays push

好吧,我在这里有点不对,我已经浪费了一个小时了,所以希望你们其中一个人可以帮助我.

var a = ['left','top'],
    x = [];

for(i=0;i<a.length;i++) {
    x.push({
        a[i] : 0
    });
}
Run Code Online (Sandbox Code Playgroud)

如何将值推送到var a数组中的每个键?

你可以看到我失败的尝试,但希望能让你深入了解我想要实现的目标.

Fel*_*ing 48

您必须使用括号表示法:

var obj = {};
obj[a[i]] = 0;
x.push(obj);
Run Code Online (Sandbox Code Playgroud)

结果将是:

x = [{left: 0}, {top: 0}];
Run Code Online (Sandbox Code Playgroud)

也许只需要一个具有两个属性的对象,而不是一个对象数组:

var x = {};
Run Code Online (Sandbox Code Playgroud)

x[a[i]] = 0;
Run Code Online (Sandbox Code Playgroud)

这将导致x = {left: 0, top: 0}.


Moh*_*man 5

您可以使用:


创建对象数组:

var source = ['left', 'top'];
const result = source.map(arrValue => ({[arrValue]: 0}));
Run Code Online (Sandbox Code Playgroud)

演示:

var source = ['left', 'top'];
const result = source.map(arrValue => ({[arrValue]: 0}));
Run Code Online (Sandbox Code Playgroud)


或者,如果您想从数组的值创建单个对象:

var source = ['left', 'top'];
const result = source.reduce((obj, arrValue) => (obj[arrValue] = 0, obj), {});
Run Code Online (Sandbox Code Playgroud)

演示:

var source = ['left', 'top'];

const result = source.map(value => ({[value]: 0}));

console.log(result);
Run Code Online (Sandbox Code Playgroud)