我有一个列表列表,每个内部列表都有2个项目。我想把它变成字典。
const have = [['a', 1], ['b', 2]]
const want = {'a': 1, 'b': 2}
在python中,我会做
>>> dict([['a', 1], ['b', 2]])
{'a': 1, 'b': 2}
在JavaScript中最简单的方法(1-衬)是什么?
我能想到的最简单的方法是使用2排纸。
const have = [['a', 1], ['b', 2]]
const want = {}
have.forEach(([key, value]) => want[key] = value)
答案 0 :(得分:3)
将来会是:
const want = Object.fromEntries(have);
希望它将成为ES2019的一部分,并且已在某些浏览器中受支持。 doc
在支持变得更好之前,您的两线服务是必经之路。
答案 1 :(得分:1)
如果您真的必须将其作为一种衬纸,则可以使用reduce。
const have = [['a', 1], ['b', 2]];
const want = have.reduce((dict, [key, value]) => Object.assign(dict, {[key]: value}), {});
尽管它不是很可读,但它为每个元素创建一个一次性对象。我通常更喜欢可读性,而不是试图变得聪明。
答案 2 :(得分:0)
使用Map和Reduce的示例。
我想因为有了你JSON.stringify()
,你会想要Reduce
// using Map
const have = [
['a', 1],
['b', 2]
];
let want = new Map(have);
console.log(want.get('a'));
// Using Reduce
want = have.reduce((a, v) => {
a[v[0]] = v[1];
return a;
}, {});
console.log(want);
console.log(JSON.stringify(want));