javascript - 来自响应数据的 javascript 映射
问题描述
我有一个 laravel 应用程序,我在其中获取响应数据并将重复项复合到评论数组中,如下所示:
const dataMap = response.data.reduce((map, { taskt_id, comment_name, comment, ...extra }) => {
let item = (map.has(taskt_id) ? map : map.set(taskt_id, { ...extra, comments: [] })).get(taskt_id)
return item.comments.push({ comment_name, comment }), map
}, new Map())
这一直工作得很好,但是现在我的响应数据中返回了另一个数据集,该数据集也有多个记录(一个类别但多个类别详细信息),当我使用此方法时,它不再有效,我的新类别数组是空的:
const dataMap = response.data.reduce((map, { taskt_id, comment_name, comment, category, category_detail, ...extra }) => {
let item = (map.has(taskt_id) ? map : map.set(taskt_id, { ...extra, comments: [], categories: [] })).get(taskt_id)
return item.comments.push({ comment_name, comment }), map
return item.categories.push({ category, category_detail }), map
}, new Map())
因此,也许我以错误的方式向其中添加了另一个数组,但是如何以我的工作评论版本的行为方式向此映射添加更多数组?
解决方案
您在 item.comments.push 之后返回地图并丢弃其余部分。
你可以替换这个:
return item.comments.push({ comment_name, comment }), map
return item.categories.push({ category, category_detail }), map
有了这个:
item.comments.push({ comment_name, comment })
item.categories.push({ category, category_detail })
return map
因此,您将评论和类别添加到您的项目,然后返回地图。