[英]JavaScript: group objects of array per attribute in one object with a list
[英]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)
你可以结合使用flatMap
和map
相同:
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.