Reduce 函数创建一个包含一半数据的数组

Reduce function creating an array with half the data

我正在尝试根据每个对象中 属性 的值将数据分类到单独的数组中。我正在使用 reduce 函数,这对我来说是新的,但仍然很混乱。

我的数据是这样的:

const data = [{
            score: 2,
            category: "date of admission"
            subcategory: 2-days
         }, { score: 12,
            category: "Vitals",
            subcategory: "bloodPressure",
           },{
            score: 4,
            category: "date of admission"
            subcategory: 3-days
         }...]

我的 reduce 函数如下所示:

const grouped = data.reduce((cat, item, index, data) => {
      for (index = 0; data.length; index++) {
        cat[item.category] = [];
        cat[item.category].push(item);
        return cat;
      }
    }, {});

我遇到的问题是当我 console.log(grouped) 每个数组都有正确的类别标签但数组内部只有 1 个对象时的输出。即使数据可能有多个具有相同类别的项目。我不确定我在这里做错了什么。任何建议都会有所帮助。

我想你正在寻找这样的东西:

const grouped = data.reduce((catetories, item) => {
    const category = catetories[item.category] || [];
    return {
        ...catetories,
        [item.category]: [
            ...category,
            item,
        ]
    }
}, {});

const groupedArr = Object.keys(grouped).map((key) => grouped[key]);

const data = [{
            score: 2,
            category: "date of admission",
            subcategory: "2-days"
         }, { score: 12,
            category: "Vitals",
            subcategory: "bloodPressure",
           },{
            score: 4,
            category: "date of admission",
            subcategory: "3-days"
         }];

const cat = {};
for (let c of data) {
   if (cat[c.category]) {
      cat[c.category].push(c);
   } else {
      cat[c.category] = [c];
   }
}
console.log(cat)