将键数组转换为键值对对象

时间:2019-11-25 19:18:10

标签: javascript node.js javascript-objects

我知道该如何转换:

const keys = [1, 2, 3];

对此:

[{key: 1, val: "q"}, {key: 2, val: "w"}, {key: 3, val: "e"}]

具有单个映射语句:

keys.map((x, i) => ({key: x, val: "qwe".charAt(i)}));

但是我实际上想得到这个:

{1: "q", 2: "w", 3: "e"}

是否有一种简洁的方法可以在与上述语句类似的单个语句中执行此操作?

很抱歉,如果这是一个重复的问题;老实说,我不太确定如何搜索。

非常感谢!!

4 个答案:

答案 0 :(得分:1)

您可以使用reduce

keys.reduce((accumulator, value, index) => { accumulator[index] = "qwe".charAt(index); return accumulator; }, {})

答案 1 :(得分:0)

啊,明白了:

const objects = Object.assign({}, ...keys.map((x, i) => ({[x]: "qwe".charAt(i)})));

尽管我很高兴听到其他建议以及与此相关的任何注释...

答案 2 :(得分:0)

您可以将reduce和empty对象用作累加器的初始值,并在其上插入属性值对:

setTouched(errors)

答案 3 :(得分:0)

这是我的解决方法。

const keys = [1, 2, 3];
const vals = "qwe";
const result = keys.reduce((prev, cur, idx) => ({
    ...prev,
    [cur]: vals[idx]
}), {});