【问题标题】:ReactJS: Grouping Array of Objects Based on Title Regex Value [duplicate]ReactJS:基于标题正则表达式值的对象分组数组[重复]
【发布时间】:2021-05-24 00:25:18
【问题描述】:

我有一个对象数组,我试图根据标题正则表达式值进行分组。

示例数组:

[
  {
    id: "1",
    title: "[GroupA] Example Title",
    date: "example date",
  },
  {
    id: "2",
    title: "[GroupA] Example Title",
    date: "example date",
  },
  {
    id: "3",
    title: "[GroupB] Example Title",
    date: "example date",
  },
  {
    id: "4",
    title: "[GroupC] Example Title",
    date: "example date",
  },
];

我正在尝试根据 title: "[Group]" 对每个对象进行分组

下面的.replace() 给了我组值

let titleValue = data.title.replace(/(^.*\[|\].*$)/g, "");

// result: GroupA, GroupA, GroupB, GroupC

我怎样才能将这些对象数组分组到它们的titleValue

TIA

【问题讨论】:

  • 你想怎么分组?如果您也可以将结果添加为代码,那将很容易回答?
  • 您希望将结果作为包含group name 数组作为属性的对象,然后将它们添加到该数组下吗?
  • 嘿@decpk 正确,那将是理想的。你怎么认为?抱歉,我没有包含所需的输出/结果,因为我真的不知道如何实现它
  • @Drew。这不完全是一个重复的问题。最好重新打开它。

标签: javascript reactjs regex


【解决方案1】:

假设您想要一个对象,其中 组名 作为键,所有匹配元素的数组作为值:

const data = [
  {
    id: "1",
    title: "[GroupA] Example Title",
    date: "example date",
  },
  {
    id: "2",
    title: "[GroupA] Example Title",
    date: "example date",
  },
  {
    id: "3",
    title: "[GroupB] Example Title",
    date: "example date",
  },
  {
    id: "4",
    title: "[GroupC] Example Title",
    date: "example date",
  },
];


const groupedData = data.reduce((acc, cur) => {
  let titleValue = cur.title.replace(/(^.*\[|\].*$)/g, "");
  if(acc[titleValue]) {
    acc[titleValue].push(cur);
  } else {
    acc[titleValue] = [cur];
  }
  return acc;
}, {});


console.log(groupedData);

【讨论】:

  • 太棒了,感谢您的帮助
  • 你也可以创建一个更短的版本(acc[titleValue] = acc[titleValue] ?? []).push(cur);
  • @decpk (acc[titleValue] ??= []).push(cur); 也会更短。但我想让它更容易理解并有更好的支持:p
猜你喜欢
  • 2019-01-25
  • 1970-01-01
  • 2011-11-27
  • 2010-12-31
  • 1970-01-01
  • 2018-10-30
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多