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)
我正在尝试根据每个对象中 属性 的值将数据分类到单独的数组中。我正在使用 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)