如果我使用传播语法,如何完全返回内部嵌套对象的数组?

时间:2019-06-10 10:06:35

标签: javascript ecmascript-6

我尝试通过数组中的对象各自的组号对它们进行分组。如果他/她是领导者或成员,我还添加了额外的字段来标记对象。那行得通,但是我的问题是,嵌套数组中的“ advisers”对象没有返回。当我使用传播语法返回时,它是null

这是我的数组:

const data = [{
  "name": "John",
  "groupNo": 1
}, {
  "name": "Chelsea",
  "groupNo": 1
}, {
  "name": "Mark",
  "groupNo": 1
}, {
  "name": "Mary",
  "groupNo": 8
}, {
  advisers: [{
    "name": "Kenedy",
    "groupNo": 1
  }, {
    "name": "Chelsea",
    "groupNo": 1
  }, {
    "name": "Chris",
    "groupNo": 8
  }];
}];

这是我添加额外字段的代码。它可以工作,但advisers数组是null

const output = data.map(function(member) {
  if (this.has(member.groupNo)) {
    // Member
    return {
      ...member,
      "leaderNo": "",
      "memberNo": this.size
    }
  }
  // Leader
  this.add(member.groupNo)
  return {
    ...member,
    "leaderNo": this.size,
    "memberNo": ""
  }
}, new Set())

console.log(output);

我只想保留阵列中的所有数据,包括顾问阵列

1 个答案:

答案 0 :(得分:1)

您的数组不一致,因此您可以在map函数中添加对Advisors键的检查,然后从那里开始。像这样:

const {advisers} = member; 
if(advisers){
   return {advisers};
}