是否可以从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"}
我知道我可以通过地图和分配来做到,但是直接吗?
答案 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);