繁体   English   中英

将带有子列表的 JavaScript 对象数组列表重新排列为一个对象,并将父详细信息插入子列表中

[英]Rearrange list of JavaScript array of objects with children list into one object with the parent details inserted inside the child list

例如,假设我有以下具有父列表和子列表的 javascript 对象数组...

let accessories = [
  {
    "storeid": "1",
    "storename": "Novare station one",
    "computers": [
      {
        "name": "Elite book",
        "status": "available",
        "date": "Tue Jun 14 2022"
      },
      {
        "name": "HP Envy",
        "status": "available",
        "date": "Tue Jun 14 2022"
      },
      {
        "name": "Macbook Pro",
        "status": "available",
        "date": "Sat Jul 02 2022"
      }
    ]
  },
  {
    "storeid": "2",
    "storename": "Novare central",
    "computers": [
      {
        "name": "HP workstation",
        "status": "available",
        "date": "Wed Jul 06 2022"
      },
      {
        "name": "Macbook air",
        "status": "available",
        "date": "Wed Jul 06 2022"
      }
    ]
  }
]

我想重新排列上面的列表以形成下面的单个对象,并将父对象详细信息添加到子列表中

let accessories = [ 
  {
    "storeid": "1",
    "storename": "Novare station one",
    "name": "Elite book",
    "status": "available",
    "date": "Tue Jun 14 2022"
  },
  {
    "storeid": "1",
    "storename": "Novare station one",
    "name": "HP Envy",
    "status": "available",
    "date": "Tue Jun 14 2022"
  },
  {
    "storeid": "1",
    "storename": "Novare station one",
    "name": "Macbook Pro",
    "status": "available",
    "date": "Sat Jul 02 2022"
  },
  {
    "storeid": "2",
    "storename": "Novare central",
    "name": "HP workstation",
    "status": "available",
    "date": "Wed Jul 06 2022"
  },
  {
    "storeid": "2",
    "storename": "Novare central",
    "name": "Macbook air",
    "status": "available",
    "date": "Wed Jul 06 2022"
  },
]

我不知道这是否可能,但任何帮助将不胜感激。

您可以尝试下面的代码,它应该适合您。

const accessories = [
  {
    "storeid": "1",
    "storename": "Novare station one",
    "computers": [
      {
        "name": "Elite book",
        "status": "available",
        "date": "Tue Jun 14 2022"
      },
      {
        "name": "HP Envy",
        "status": "available",
        "date": "Tue Jun 14 2022"
      },
      {
        "name": "Macbook Pro",
        "status": "available",
        "date": "Sat Jul 02 2022"
      }
    ]
  },
  {
    "storeid": "2",
    "storename": "Novare central",
    "computers": [
      {
        "name": "HP workstation",
        "status": "available",
        "date": "Wed Jul 06 2022"
      },
      {
        "name": "Macbook air",
        "status": "available",
        "date": "Wed Jul 06 2022"
      }
    ]
  }
]

const mappedData = [];
(accessories || []).forEach(item => {
  const values = item.computers;
  values.forEach(value => (mappedData.push({
    storeid: item.storeid,
    storename: item.storename,
    name: value.name,
    status: value.status,
    date: value.date,
  })))
});
console.log("accessoriesMappedData", mappedData)

 const accessories = [ { 'storeid': '1', 'storename': 'Novare station one', 'computers': [ { 'name': 'Elite book', 'status': 'available', 'date': 'Tue Jun 14 2022' }, { 'name': 'HP Envy', 'status': 'available', 'date': 'Tue Jun 14 2022' }, { 'name': 'Macbook Pro', 'status': 'available', 'date': 'Sat Jul 02 2022' } ] }, { 'storeid': '2', 'storename': 'Novare central', 'computers': [ { 'name': 'HP workstation', 'status': 'available', 'date': 'Wed Jul 06 2022' }, { 'name': 'Macbook air', 'status': 'available', 'date': 'Wed Jul 06 2022' } ] } ] const result = accessories.flatMap(item => item.computers.map(element => Object.assign({ 'storeid': item['storeid'], 'storename': item['storename'] }, element) ) ) console.log(result)

你可以结合使用flatMapmap相同:

 let accessories = [ { "storeid": "1", "storename": "Novare station one", "computers": [ { "name": "Elite book", "status": "available", "date": "Tue Jun 14 2022" }, { "name": "HP Envy", "status": "available", "date": "Tue Jun 14 2022" }, { "name": "Macbook Pro", "status": "available", "date": "Sat Jul 02 2022" } ] }, { "storeid": "2", "storename": "Novare central", "computers": [ { "name": "HP workstation", "status": "available", "date": "Wed Jul 06 2022" }, { "name": "Macbook air", "status": "available", "date": "Wed Jul 06 2022" } ] } ] const result = accessories.flatMap(({computers, ...rest}) => computers.map(ele => ({...rest, ...ele}))) console.log(result)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM