为了账号安全,请及时绑定邮箱和手机立即绑定

使用嵌套对象展平包含多个对象的数组

使用嵌套对象展平包含多个对象的数组

慕村225694 2023-04-01 16:35:53
我试图做的这个特别期望的结果结果证明比我对刚开始编程的人所期望的更具挑战性。我将 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 方面取得了一些小进展,但不完全确定它是否是实现兼容性的正确方法,因为预期的目标群体可能正在使用过时的浏览器。其他一些答案的逻辑对我来说有点难以理解 atm 所以希望能提供一些建议以防万一
查看完整描述

3 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

您可以使用Array.mapObject destructuring

let data = [{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"}}]


const formatData = (data) => {

  return data.map(({balance, playerInfo}) => ({

    balance,

    level: playerInfo.level,

    name: playerInfo.name

  }))

}


console.log(formatData(data))


let data = [{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"}}]


const formatData = (data) => {

  return data.map(({ balance, playerInfo: { level, name }}) => ({

    balance,

    level,

    name

  }))

}


console.log(formatData(data));



查看完整回答
反对 回复 2023-04-01
?
白衣非少年

TA贡献1155条经验 获得超0个赞

简短的'n甜蜜是这样的:


let rawData = [{

  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"

  }

}]


let formattedData =

  rawData.map(({

    balance,

    playerInfo: {

      level,

      name

    }

  }) => ({ balance, level, name }))


console.log(formattedData)


查看完整回答
反对 回复 2023-04-01
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您可以直接使用map方法进行转换。


let input = [{

  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"

  }

}];

let output = input.map(obj => ({

  balance: obj.balance,

  level: obj.playerInfo?.level,

  name: obj.playerInfo?.name,

}));


console.log(output);


查看完整回答
反对 回复 2023-04-01
  • 3 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信