我的要求是我必须按键“taxGrp”分组。“taxtGrp”应该包含“名称”和“收入”。如果taxGrp是NON_TAX,那么taxGrp =‘成员’和收入= 1000 (如下面的样本数据所示),如果taxGrp不是'NON_TAX‘,那么taxGrp=那个群体中的’子女‘的人的名字,而收入的价值是该群体的合并收入。我做不到。获取所需的输出。
var grp = [
{
taxGrp: 'NON_TAX',
name: 'Mary Zelle',
relation: 'APPLICANT',
income: '500'
},
{
taxGrp: 'NON_TAX',
name: 'Jack Zelle',
relation: 'SPOUSE',
income: '500'
},
{
taxGrp: 'TAX_GRP_1',
name: 'Victor Zele',
relation: 'CHILD',
income: 200
},
{
taxGrp: 'TAX_GRP_1',
name: 'Rosey Zele',
relation: 'DEPENDANT',
income: 100
},
{
taxGrp: 'TAX_GRP_2',
name: 'Derk Zele',
relation: 'CHILD',
income: 300
},
{
taxGrp: 'TAX_GRP_2',
name: 'Marc Zele',
relation: 'DEPENDANT',
income: null
}
];预期产出:
[
'NON_TAX': {
name: 'members'
income: 1000
},
'TAX_GRP_1': {
name: 'Victor Zele',
income: 400
},
'TAX_GRP_2': {
name: 'Derk Zele',
income: 300
}
]
var grp = [
{
taxGrp: 'NON_TAX',
name: 'Mary Beth',
relation: 'PARENT'
},
{
taxGrp: 'TAX_GRP_1',
name: 'Victor Zele',
relation: 'CHILD'
},
{
taxGrp: 'TAX_GRP_1',
name: 'Rosey Zele',
relation: 'DEPENDANT'
},
{
taxGrp: 'TAX_GRP_2',
name: 'Derk Zele',
relation: 'CHILD'
},
{
taxGrp: 'TAX_GRP_2',
name: 'Marc Zele',
relation: 'DEPENDANT'
}
];
var memberObj = grp.reduce((acc, val) => {
acc[val.taxGrp] = {
name: val.name
};
return acc
}, {});
console.log('memberObj >>', memberObj);
发布于 2022-11-25 14:16:46
Somme问题:
income的混合类型:有时是字符串,有时是数字。这应该是harmonised.income,假设输出将包含与其相关的任何内容--relation的对象赋予一个特殊的角色。只有当name属性为true或taxGrp为"NON_TAX"时,才应设置该属性。
下面是与上述要点相适应的reduce回调:
var grp = [
{taxGrp: 'NON_TAX',name: 'Mary Zelle',relation: 'APPLICANT',income: 500},
{taxGrp: 'NON_TAX',name: 'Jack Zelle',relation: 'SPOUSE',income: 500},
{taxGrp: 'TAX_GRP_1',name: 'Victor Zele',relation: 'CHILD',income: 200},
{taxGrp: 'TAX_GRP_1',name: 'Rosey Zele',relation: 'DEPENDANT',income: 100},
{taxGrp: 'TAX_GRP_2',name: 'Derk Zele',relation: 'CHILD',income: 300},
{taxGrp: 'TAX_GRP_2',name: 'Marc Zele',relation: 'DEPENDANT',income: null}];
var memberObj = grp.reduce((acc, val) => {
acc[val.taxGrp] ??= { income: 0 };
if (val.taxGrp === "NON_TAX" || val.relation == "CHILD") {
acc[val.taxGrp].name = val.taxGrp === "NON_TAX" ? "members" : val.name;
}
acc[val.taxGrp].income += +val.income;
return acc;
}, {});
console.log('memberObj >>', memberObj);
https://stackoverflow.com/questions/74572066
复制相似问题