首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ES6:对象操作

ES6:对象操作
EN

Stack Overflow用户
提问于 2022-11-25 11:22:40
回答 1查看 38关注 0票数 -2

我的要求是我必须按键“taxGrp”分组。“taxtGrp”应该包含“名称”和“收入”。如果taxGrp是NON_TAX,那么taxGrp =‘成员’和收入= 1000 (如下面的样本数据所示),如果taxGrp不是'NON_TAX‘,那么taxGrp=那个群体中的’子女‘的人的名字,而收入的价值是该群体的合并收入。我做不到。获取所需的输出。

代码语言:javascript
复制
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
}
];

预期产出:

代码语言:javascript
复制
[
'NON_TAX': {
   name: 'members'
   income:  1000
},
'TAX_GRP_1': {
   name: 'Victor Zele',
   income:  400
},
'TAX_GRP_2': {
   name: 'Derk Zele',
   income:  300
}
]

代码语言:javascript
复制
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);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-25 14:16:46

Somme问题:

  • 输入具有income的混合类型:有时是字符串,有时是数字。这应该是harmonised.
  • Your代码没有尝试访问income,假设输出将包含与其相关的任何内容--
  • --输出格式无效。数组文字表示法不允许命名属性,如“not _TAX”。我假设您实际上不需要数组,但是普通的对象
  • 在代码中没有尝试给具有“子”relation的对象赋予一个特殊的角色。只有当name属性为true或taxGrp为"NON_TAX"

时,才应设置该属性。

下面是与上述要点相适应的reduce回调:

代码语言:javascript
复制
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);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74572066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档