您可以直接从Javascript数组中填充对象的键吗?

时间:2019-04-25 21:50:15

标签: javascript

是否可以从JavaScript中的数组直接 填充对象的键?

类似

var a = ["a", "b", "c"];
var b = {}

b[a] = [1, 2, 3];

// {a:1, b:2, c:3}

换句话说,

的反义词
Object.assign({}, ['a','b','c']); 
// {0:"a", 1:"b", 2:"c"}

我知道我可以通过地图和分配来做到,但是直接吗?

2 个答案:

答案 0 :(得分:1)

如果您具有已知数量的属性,则可以使用解构来完成:

 const b = {};
 ([b.a, b.b, b.c] = [1, 2, 3]);

否则,您必须构建键值对,然后将它们变成对象:

 const keys = ["a", "b", "c"];
 const values = [1, 2, 3];

 const result = Object.fromEntries(keys.map((key, i) => [key, values[i]]));

不幸的是,没有本机Array.zip可以简化此操作,但是某些libraries确实支持:

 const result = Object.fromEntries(_.zip(keys, values));

我觉得很好。


不,b[a] =将始终设置a的{​​{1}}属性,否则会造成混乱。

答案 1 :(得分:1)

尝试

a.reduce( (o,c,i)=>({...o,[c]:i}), {})

var a = ["a", "b", "c"];

var b= a.reduce( (o,c,i)=>({...o,[c]:i}), {})

console.log(b);