您将如何使用Javascript更改值/添加到对象数组中的嵌套对象数据?

您将如何使用Javascript更改值/添加到对象数组中的嵌套对象数据?,javascript,arrays,typescript,object,array.prototype.map,Javascript,Arrays,Typescript,Object,Array.prototype.map,以上是我收集的一个样本,以最好地证明我的问题。我很难理解为什么对象数组的嵌套映射(.map())不允许我更改嵌套数据。当我控制台记录结果时,我得到的不是“[undefined,undefined]”就是未更改的“people”数组 我想返回与“people”相同的数组,只是将嵌套的“beers”数组(people.teams.beers[])替换为“beers”数组中相应的对象。下面是成功结果的示例: const beers = [ { id: '100', name: 's

以上是我收集的一个样本,以最好地证明我的问题。我很难理解为什么对象数组的嵌套映射(.map())不允许我更改嵌套数据。当我控制台记录结果时,我得到的不是“[undefined,undefined]”就是未更改的“people”数组

我想返回与“people”相同的数组,只是将嵌套的“beers”数组(people.teams.beers[])替换为“beers”数组中相应的对象。下面是成功结果的示例:

const beers = [
  {
    id: '100',
    name: 'stoneys'
  },
  {
    id: '200',
    name: 'budweiser'
  },

  {
    id: '300',
    name: 'miller'
  },

  {
    id: '400',
    name: 'corona'
  }
];

const people = [
  {
    name: 'steve',
    teams: [
      {
        name: 'pirates',
        beers: ['100']
      },
      {
        name: 'penguins',
        beers: ['300']
      }
    ]
  },
  {
    name: 'jim',
    teams: [
      {
        name: 'indians',
        beers: ['200']
      },
      {
        name: 'blue jackets',
        beers: ['100', '400']
      }
    ]
  }
];

let newPeople = people.map(fan => {
  fan.teams.map(team => {
    team.beers.map(beer => beers.filter(brand => brand.id === beer)[0])
  });
});
需要一个以单个数组元素为参数并返回映射值的函数。在您的情况下,您没有从映射函数返回任何值,因此会两次未定义

const啤酒=[
{
id:'100',
名字:“斯通尼斯”
},
{
id:'200',
名称:“百威”
},
{
id:'300',
姓名:“米勒”
},
{
id:'400',
名称:“科罗纳”
}
];
康斯特人=[
{
姓名:'史蒂夫',
小组:[
{
名字:'海盗',
啤酒:['100']
},
{
名称:“企鹅”,
啤酒:['300']
}
]
},
{
名字:“吉姆”,
小组:[
{
姓名:'印第安人',
啤酒:['200']
},
{
名称:'蓝色夹克',
啤酒:['100','400']
}
]
}
];
让newPeople=people.map(fan=>{
让团队=fan.teams.map(团队=>{
让beer=team.beers.map(beer=>beers.filter(brand=>brand.id==beer)[0]);
返回{name:team.name,beers:beer}
});
返回{name:fan.name,teams:teams}
});

console.log(newPeople)
您可以发布您尝试过的代码吗?map返回映射结果……您不需要对其执行任何操作it@terrymorse-OP的代码在底部的第一个代码块中这对我来说非常有效!谢谢!现在,有没有办法使返回的对象动态化,这样我就不必单独管理每个返回对象中的键值对object如果我从原始对象数组中添加或删除字段?我尝试使用object.assign(),但是,我无法成功返回正确的对象。您能否打开另一个问题以避免编辑此问题?
 {
    name: 'steve',
    teams: [
      {
        name: 'pirates',
        beers: [
          {
            id: '100',
            name: 'stoneys'
          }
        ]
      },
      {
        name: 'penguins',
        beers: [
          {
            id: '300',
            name: 'miller'
          }
        ]
      }
    ]
  }