提问者:小点点

如何将以下内容从数据转换为组数据? [副本]


这是我的意见:

  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"] }
  ];

共3个答案

匿名用户

您可以使用reduce并检查数组值是否已经存在来完成此操作。 如果是的话,再加上。 如果没有,就创建它。

null

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);

匿名用户

使用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);

匿名用户

您可以简单地reduce它并获取object.values()

null

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);