从数组数组创建JavaScript字典的简单方法

时间:2019-04-01 22:59:17

标签: javascript arrays dictionary

我有一个列表列表,每个内部列表都有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)

3 个答案:

答案 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));