jquery - 根据 c# linq 输出分组
问题描述
我有一个数组,如下所示,我试图分组并返回结果
{CategoryName: 'Grounding', SubCategoryId: 4, SubCategoryName: 'While drifting'}
{CategoryName: 'Grounding', SubCategoryId: 5, SubCategoryName: 'While making way'}
{CategoryName: 'Grounding', SubCategoryId: 6, SubCategoryName: 'At anchor/alongside'}
我使用以下代码进行分组
function groupBy(objectArray, property) {
return objectArray.reduce((acc, obj) => {
const key = obj[property];
if (!acc[key]) {
acc[key] = ["RC"];
}
// Add object to list for given key's value
acc[key].push(obj);
return acc;
}, {});
}
const groupedPeople = groupBy(data, 'CategoryName');
console.log(groupedPeople);
这给了我以下输出
{ Grounding: [{ CategoryName: "Grounding", SubCategoryId: 4,
SubCategoryName: "While drifting" }, { CategoryName: "Grounding",
SubCategoryId: 5, SubCategoryName: "While making way" }, {
CategoryName: "Grounding", SubCategoryId: 6, SubCategoryName: "At
nchor/alongside" }] }
是否有可能获得如下输出,我使用 linq 从我的 C# 代码中获得
CategoryName: "Grounding"
RC:
0: {SubCategoryId: 4, SubCategoryName: 'While drifting', CategoryName: 'Grounding'}
1: {SubCategoryId: 5, SubCategoryName: 'While making way', CategoryName: 'Collision'}
2: {SubCategoryId: 6, SubCategoryName: 'At anchor/alongside', CategoryName: 'Collision'}
解决方案
好的,这就是我得到的,可能对某人有帮助
function groupBy(objectArray, property) {
return objectArray.reduce((acc, obj) => {
const key = obj[property];
if (!acc["CategoryName"]) acc["CategoryName"] = key;
if (acc.CategoryName === key) acc.RC.push(obj)
return acc;
}, {"RC":[]});
}
const groupedPeople = groupBy(data, 'CategoryName');
console.log(groupedPeople);