【问题标题】:How can I convert the following into group data from data? [duplicate]如何将以下内容从数据转换为组数据? [复制]
【发布时间】:2020-06-06 14:15:05
【问题描述】:

这是我的输入:

  data = [
    { name: "John Cena", groupName: "WWE" },
    { name: "Nandini", groupName: null },
    { name: "Rock", groupName: "WWE" },
    { name: "Vinay", groupName: null },
    { name: "Rey Mesterio", groupName: "WWE" },
    { name: "Gokul", groupName: "FSD" },
    { name: "Rohitha", groupName: "FSD" }
  ];

我需要输出为以下格式:

  requiredFormat = [
    { name: "FSD", value: ["Gokul", "Rohitha"] },
    { name: "WWE", value: ["John Cena", "Rock", "Rey Mesterio"] },
    { name: null, value: ["Nandini", "Vinay"] }
  ];

【问题讨论】:

  • 请先搜索再询问。已经有很多类似的问题了。

标签: javascript arrays json typescript


【解决方案1】:

您可以使用reduce 执行此操作并检查数组值是否已经存在。如果是这样,请添加它。如果没有,请创建它。

const data = [
  { name: "John Cena", groupName: "WWE" },
  { name: "Nandini", groupName: null },
  { name: "Rock", groupName: "WWE" },
  { name: "Vinay", groupName: null },
  { name: "Rey Mesterio", groupName: "WWE" },
  { name: "Gokul", groupName: "FSD" },
  { name: "Rohitha", groupName: "FSD" }
];

const requiredFormat = data.reduce((acc, el) => {
  const found = acc.find(({ name }) => name === el.groupName);
  if (found) found.value.push(el.name);
  else acc.push({ name: el.groupName, value: [el.name] })
  return acc;
}, []);

console.log(requiredFormat);

【讨论】:

    【解决方案2】:

    使用Array.reduce 解决您的问题

    const data = [
        { name: "John Cena", groupName: "WWE" },
        { name: "Nandini", groupName: null },
        { name: "Rock", groupName: "WWE" },
        { name: "Vinay", groupName: null },
        { name: "Rey Mesterio", groupName: "WWE" },
        { name: "Gokul", groupName: "FSD" },
        { name: "Rohitha", groupName: "FSD" }
      ];
    
    const requiredFormat = data.reduce((acc, item, key) => {
        const group = acc.find(group => group.name === item.groupName);
        if (!group) {
            acc.push({name: item.groupName, value: [item.name]})
        } else {
            group.value.push(item.name);
        }
        return acc;
    }, []);
    
    console.log(requiredFormat);
    

    【讨论】:

      【解决方案3】:

      你可以简单地reduce它和Object.values()

      var data = [ { name: "John Cena", groupName: "WWE" }, { name: "Nandini", groupName: null }, { name: "Rock", groupName: "WWE" }, { name: "Vinay", groupName: null }, { name: "Rey Mesterio", groupName: "WWE" }, { name: "Gokul", groupName: "FSD" }, { name: "Rohitha", groupName: "FSD" } ];
      
      var result = Object.values(data.reduce((acc, {name, groupName})=>{
          acc[groupName] =acc[groupName] || {name:groupName, value:[]};
          acc[groupName].value.push(name);
          return acc;
      },{}));
      
      console.log(result);

      【讨论】:

        猜你喜欢
        • 2017-03-11
        • 1970-01-01
        • 1970-01-01
        • 2018-10-11
        • 1970-01-01
        • 1970-01-01
        • 2017-05-09
        • 2019-10-04
        • 2021-05-23
        相关资源
        最近更新 更多