js数组格式转换问题

发布于 2022-09-12 04:10:45 字数 194 浏览 11 评论 0

如何将上面这个数据,转换成下面这种,初学者,表示好难,还请各位老哥答疑解惑image.png
------------------------------image.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

淡莣 2022-09-19 04:10:45

哥们,你们说我做的对吗

编辑一下,建议题主下次贴代码,不要放截图,谢谢。

arr.reduce((acc, cur) => {
  const { year, month } = cur;

  let targetYearObj = acc.find((item) => item.year === year);
  if (!targetYearObj) {
    targetYearObj = { year, list: [] };
    acc.push(targetYearObj);
  }

  let targetMonthObj = targetYearObj.list.find((item) => item.month === month);
  if (!targetMonthObj) {
    targetMonthObj = { month, children: [] };
    targetYearObj.list.push(targetMonthObj);
  };

  targetMonthObj.children.push(cur);
  return acc;
}, []);
叫嚣ゝ 2022-09-19 04:10:45

var list = [
    {year: 2020, month: 8, title: 'sdfsdfadfs'},
    {year: 2020, month: 8, title: '123213'},
    {year: 2020, month: 8, title: '45645654'},
    {year: 2020, month: 8, title: '67876'},
    {year: 2020, month: 8, title: '09'},
    {year: 2020, month: 7, title: '0000'},
    {year: 2020, month: 7, title: 'asdf234'},
    {year: 2020, month: 6, title: '23432'},
    {year: 2019, month: 8, title: 'sdfsdfadfs'},
];

function groupBy(key, list, childKey='list') {
    return Object.entries(list.reduce((res, v) => {
       const group = res[ v[key] ];
       if(group) group.push(v);
       else res[v[key]] = [v];
       return res;
    }, {})).map(([value, group]) => ({[key]: value, [childKey]: group}));
}

groupBy('year', list).map(group => ({year: group.year, list: groupBy('month', group.list, 'children')}))

输出并不是按年降序的。如果有要求顺序可以加一个sort

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文