我收到以下形式的请求:
req = {
"id": ["1","2"],
"values": ["fruit", "vegies"]
}
我要发送以下响应:
res = {
"idMap": {
"1": ["fruit", "veggies"],
"2": ["fruit", "veggies"]
}
}
我尝试使用地图功能,但值以 [数组] 而不是 [“水果”,“蔬菜”] 出现。我附上以下代码:
const values = req.values
const id = req.id.map((ids) => {
const idmap = {
[ids]: values
}
return idmap;
});
req = {
"idMap": id
}
帮我这个家伙。在此先感谢。
答案 0 :(得分:2)
您应该使用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; }
答案 1 :(得分:0)
您可以使用(即将到来的)Object.fromEntries
从映射的条目中生成一个对象。
var req = { id: ["1", "2"], values: ["fruit", "vegies"] },
res = { idMap: Object.fromEntries(req.id.map(k => [k, req.values])) };
console.log(res);