来自响应数据的javascript映射

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自响应数据的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())

所以也许我以错误的方式向此数组添加了另一个数组,但是如何以我的工作注释版本的表现方式向该映射添加更多的数组?

答案

可能需要重构您的第二个更新的解决方案,以将双精度return删除,如下所示:

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)

  // push into comments
  item.comments.push({ comment_name, comment }), map

  // push into categories
  item.categories.push({ category, category_detail }), map

  // return item after comments and categories have been added
  return item;
}, new Map());

我还认为let item = ...应该是const item = ...,因为您在dataMap功能中没有在此之后重新分配项目。

以上是关于来自响应数据的javascript映射的主要内容,如果未能解决你的问题,请参考以下文章

html 将以编程方式附加外部脚本文件的javascript代码片段,并按顺序排列。用于响应式网站,其中ma

Python代码阅读(第26篇):将列表映射成字典

jQueryUI 自动完成映射响应数据

Websockets 请求-响应映射

JavaScript笔试题(js高级代码片段)

AJAX 响应:数据(JSON、XML)还是 HTML 片段? [关闭]