You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过多层嵌套Array.map()提取JS嵌套数组的player.name?

用多层嵌套Array.map()提取嵌套数组中的player.name属性

嘿,这事儿其实挺清晰的,咱们可以通过三层嵌套的Array.map()来一步步钻到目标属性里,我给你拆解清楚:

首先,先把你的三个game对象放到一个顶层数组里,方便统一处理:

// 先定义好你的三个game对象示例
let game1 = { 
  teamLineup: [
    { team: { actual: { starters: [{ player: {name: 'Joe'} }, { player: {name: 'Kim'} }] } } },
    { team: { actual: { starters: [{ player: {name: 'John'} }, { player: {name: 'Shauna'} }] } } }
  ] 
};
let game2 = { 
  teamLineup: [
    { team: { actual: { starters: [{ player: {name: 'Mike'} }, { player: {name: 'Lily'} }] } } },
    { team: { actual: { starters: [{ player: {name: 'Tom'} }, { player: {name: 'Emma'} }] } } }
  ] 
};
let game3 = { 
  teamLineup: [
    { team: { actual: { starters: [{ player: {name: 'Bob'} }, { player: {name: 'Alice'} }] } } },
    { team: { actual: { starters: [{ player: {name: 'Dave'} }, { player: {name: 'Zoe'} }] } } }
  ] 
};

// 把三个game放到一个数组里
const games = [game1, game2, game3];

接下来就是核心的多层map()操作了,每一层对应一个数组层级:

// 提取所有名字,结果是三维数组(按game -> team -> 球员名字的层级)
const allPlayerNames = games.map(game => 
  // 第一层:遍历每个game,处理它的teamLineup数组
  game.teamLineup.map(teamEntry => 
    // 第二层:遍历当前game里的每个队伍阵容项,处理该队伍的首发球员数组
    teamEntry.team.actual.starters.map(starter => 
      // 第三层:遍历每个首发球员,提取name属性
      starter.player.name
    )
  )
);

结果说明

运行后allPlayerNames的结构是这样的:

[
  [ ["Joe", "Kim"], ["John", "Shauna"] ], // game1的所有球员名字
  [ ["Mike", "Lily"], ["Tom", "Emma"] ],  // game2的所有球员名字
  [ ["Bob", "Alice"], ["Dave", "Zoe"] ]   // game3的所有球员名字
]

如果你想把所有名字合并成一个一维数组(不管属于哪个game或team),可以在最后加上.flat(2)来展开两层嵌套:

const flattenedPlayerNames = games.map(game => 
  game.teamLineup.map(teamEntry => 
    teamEntry.team.actual.starters.map(starter => 
      starter.player.name
    )
  )
).flat(2);

// 结果:["Joe","Kim","John","Shauna","Mike","Lily","Tom","Emma","Bob","Alice","Dave","Zoe"]

每一层map()的作用就是把当前数组的每个元素转化成我们需要的内容,层层深入就拿到了最终的player.name啦~

内容的提问来源于stack exchange,提问作者Chris Newell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:29:19