我正在尝试重新映射来自API调用的对象。 响应的格式如下:
data: {
foo: [{
id: "1",
name: "joe",
info: "whatever"
}, {
id: "2",
name: "anna",
info: "whatever"
},...],
bar: [...]
}
我用来在每个响应数组中重新映射对象的代码是:
const DATA = response.data;
const entries = Object.entries(DATA);
for (const entry of entries) {
entry[1].map(entry => ({
id: entry["id"],
mixed_info: entry["name"] + ", " + entry["info"]
}));
}
此后我进行console.log数据时,它显示的内容与初始响应相同,就好像完全忽略了map函数一样。
我在做什么错?感谢您的关注。
答案 0 :(得分:2)
map
返回一个新数组,您将忽略调用结果。
答案 1 :(得分:1)
答案 2 :(得分:0)
您必须重新分配entry
:
entry[1] = entry[1].map(/*...*/);
但是,这只会反映到entries
内部的数组中,不会更改DATA
。要更改此设置,您必须将键值对最后转换回一个对象:
DATA = Object.fromEntries(entries);
否则,您必须在迭代时重新分配DATA属性:
DATA[ entry[0] ] = entry[1].map(/*...*/);
我愿意:
const { data } = response;
for(const [key, value] of Object.entries(data)) {
data[key] = value.map(/*...*/);
}
答案 3 :(得分:0)
let result = {};
for (const entry of entries) {
result[entry[0]] = entry[1].map(entry => ({
id: entry.id,
mixed_info: `${entry["name"] }, ${ entry["info"]}`,
}));
}
“结果”包含精确的重映射对象。