从两个数组构造对象

时间:2018-02-16 00:40:58

标签: javascript

我想要将两个列表组合为键值对:

keys = ['Jan 2016', 'Feb 2016', 'Mar 2016'];

values = ['janData', 'febData', 'marData'];

我想要的结果是:

dataMap = {
    'Jan 2016': 'janData',
    'Feb 2016': 'febData',
    'Mar 2016': 'marData'
};

我查看了In Javascript a dictionary comprehension, or an Object `map`并看到了在给定现有数组的情况下使用.reduce()assign()构建对象的方法。但是当我有两个数组时,我无法弄清楚如何调整这些方法。

问题:如何从两个现有阵列构建我的dataMap对象?

近年来,对象理解似乎得到了一些更新。 assign()似乎很新,但也许它不是我任务的最佳工具。另外,我只使用原生的javascript。

4 个答案:

答案 0 :(得分:2)

使用函数forEach



var keys = ['Jan 2016', 'Feb 2016', 'Mar 2016'];
var values = ['janData', 'febData', 'marData'];

let result = {};
keys.forEach((k, i) => result[k] = values[i]);

console.log(result);




您可以初始化Map对象:

地图构造函数

  

一个Array或其他可迭代对象,其元素是键值对(具有两个元素的数组,例如[[ 1, 'one' ],[ 2, 'two' ]])。每个键值对都添加到新Map中; null值被视为未定义。



var keys = ['Jan 2016', 'Feb 2016', 'Mar 2016'];
var values = ['janData', 'febData', 'marData'];

let result = new Map(keys.map((k, i) => [[k], values[i]]));

for (let key of result.keys()) {
  console.log(`${key} = ${result.get(key)}`);
}




资源

答案 1 :(得分:1)

您可以使用数组' init(from:Decoder)执行以下操作:



forEach()




答案 2 :(得分:1)

let dataMap = {}

for (let month in keys) {
    const _key = keys[month]
    dataMap[_key] = values[month]
}

这个答案取决于你的数组在"相同"为了

答案 3 :(得分:1)

我知道这里已经有很多非常好的答案了,但是如果你想要一个更“功能性编程”的方法,你可以采取另一种方法:

td