javascript - 如何在javascript中将数组值作为键值分配给对象

标签 javascript arrays object ecmascript-6

我收到以下形式的请求:

req = {
"id": ["1","2"],
"values": ["fruit", "vegies"]
}

我想发送如下响应:

res = {
"idMap": {
    "1": ["fruit", "veggies"],
    "2": ["fruit", "veggies"]
}
}

我尝试使用 map 函数,但值是[Array],而不是["fruits", "veggies"]。我附上以下代码:

const values = req.values
const id = req.id.map((ids) => {
    const idmap = {
        [ids]: values
    }
    return idmap;
});
req = {
    "idMap": id
}

帮我解决这些问题。提前致谢..

最佳答案

您应该使用reduce来创建对象 - map返回一个数组。

const req = {
  "id": ["1", "2"],
  "values": ["fruit", "vegies"]
};

const res = {
  idMap: req.id.reduce((a, c, i) => (a[c] = [...req.values], a), {})
};

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }

您还可以循环遍历数组并分配结果对象的属性:

const req = {
  "id": ["1", "2"],
  "values": ["fruit", "vegies"]
};

let res = {
  idMap: {}
};

let values = req.values;
req.id.forEach((id, index) => res.idMap[id] = [...values]);

console.log(res);
.as-console-wrapper { max-height: 100% !important; top: auto; }

关于javascript - 如何在javascript中将数组值作为键值分配给对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56555962/

相关文章:

c# - C# 中任意对象的数学运算

javascript - 如何在 SVG 排队时而不是运行时检测并停止动画?

java - 将事物从 Array 更改为 ArrayList

java - 使用 zxing 生成条形码

java - 使用 ArrayList 反转 3X3 数组中的元素

JavaScript 头部和尾部在数组上没有突变

Java 无法将对象从文件转换为数组列表

C# 对象到 XML 字符串并返回

javascript - 获得顶点折线图的正确尺寸

javascript - 自定义属性问题