Javascript 使用多个对象和嵌套对象展平阵列

Javascript 使用多个对象和嵌套对象展平阵列,javascript,flatten,Javascript,Flatten,我正在尝试实现的这个特定的期望结果,对于刚刚开始编程的人来说,比我所期望的更具挑战性 我将API查询的结果存储在数组变量中,如下所示: [{ balance: 4444, playerInfo: { age: "18", gender: "Male", level: "2", name: "Joe" } }, { balance: 3333, playerInfo:

我正在尝试实现的这个特定的期望结果,对于刚刚开始编程的人来说,比我所期望的更具挑战性

我将API查询的结果存储在数组变量中,如下所示:

[{
  balance: 4444,
  playerInfo: {
    age: "18",
    gender: "Male",
    level: "2",
    name: "Joe"
  }
}, {
  balance: 3333,
  playerInfo: {
    age: "45",
    gender: "Male",
    level: "3",
    name: "Angel"
  }
}, {
  balance: 2222,
  playerInfo: {
    age: "20",
    gender: "Female",
    level: "11",
    name: "Luce"
  }
}]
我期望的结果是:

[{
  balance: 4444,
  level: "2",
  name: "Joe"
}, {
  balance: 3333,
  level: "3",
  name: "Angel"
}, {
  balance: 2222,
  level: "11",
  name: "Luce"
}]
我在flat和flatMap方面取得了一些小的进展,但不完全确定这是否是实现兼容性的正确方法,因为目标群体可能正在使用过时的浏览器

其他一些答案的逻辑对我来说有点难理解,所以我希望能有一些提示以防万一

谢谢大家!

您可以使用和
对象分解

let data=[{余额:4444,玩家信息:{年龄:“18”,性别:“男性”,等级:“2”,姓名:“乔”},{余额:3333,玩家信息:{年龄:“45”,性别:“男性”,等级:“3”,姓名:“天使”},{余额:2222,玩家信息:{年龄:“20”,性别:“女性”,等级:“11”,姓名:“卢斯”}]
常量格式数据=(数据)=>{
返回data.map({balance,playerInfo})=>({
均衡
级别:playerInfo.level,
名称:playerInfo.name
}))
}

log(formatData(data))
您可以直接使用
map
方法进行转换

让输入=[{
余额:4444,
playerInfo:{
年龄:"18岁",,
性别:“男性”,
级别:“2”,
姓名:“乔”
}
}, {
结余:3333,
playerInfo:{
年龄:"45岁",,
性别:“男性”,
级别:“3”,
名字:“天使”
}
}, {
余额:2222,
playerInfo:{
年龄:"20岁",,
性别:“女性”,
级别:“11”,
姓名:“卢斯”
}
}];
让output=input.map(obj=>({
平衡:obj.balance,
级别:obj.playerInfo?级别,
名称:obj.playerInfo?名称,
}));

控制台日志(输出)简短而甜蜜的东西是:

let rawData=[{
余额:4444,
playerInfo:{
年龄:"18岁",,
性别:“男性”,
级别:“2”,
姓名:“乔”
}
}, {
结余:3333,
playerInfo:{
年龄:"45岁",,
性别:“男性”,
级别:“3”,
名字:“天使”
}
}, {
余额:2222,
playerInfo:{
年龄:"20岁",,
性别:“女性”,
级别:“11”,
姓名:“卢斯”
}
}]
让格式化数据=
rawData.map(({
均衡
playerInfo:{
数量
名称
}
})=>({余额、级别、名称}))

console.log(formattedData)
为什么您认为需要
.flatMap()
?要么使用
.map()
构建全新的对象,要么使用
.forEach()
修改现有对象(添加
平衡
级别
,删除
播放信息
),我很高兴能够提供帮助:)