我想要将两个列表组合为键值对:
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。
答案 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