我有下面的物件陣列,每個物件都有一個projects屬性,該屬性進一步具有其物件陣列。
const data = [
{
"title": "Release",
"projects": [
{
"name": "Server",
"result": {
"success": 0,
"failure": 100
},
}
]
},
{
"title": "Payments",
"projects": [
{
"name": "Platform1",
"result": {
"success": 100,
"failure": 0
}
},
{
"name": "Platform2",
"result": {
"success": 50,
"failure": 50,
}
}
]
}
]
我想遍歷它并得到如下結果。name是的不過是串聯title和name從上面的資料。
const result = [
{
name: 'Release-Server',
success: 0,
failure: 100,
},
{
name: 'Payments-Platform1',
success: 100,
failure: 0,
},
{
name: 'Payments-Platform2',
success: 50,
failure: 5,
},
];
我嘗試了以下方法,但無法弄清楚如何準確獲得如上所示的結果。有人可以幫忙嗎?
data.forEach(prj => {
prj.projects.forEach((project) => {
// unable to get how to push these details into a new array of object
})
});
uj5u.com熱心網友回復:
您可以執行以下操作(確保添加對空/未定義參考的檢查)
const data = [{
"title": "Release",
"projects": [{
"name": "Server",
"result": {
"success": 0,
"failure": 100
},
}]
},
{
"title": "Payments",
"projects": [{
"name": "Platform1",
"result": {
"success": 100,
"failure": 0
}
},
{
"name": "Platform2",
"result": {
"success": 50,
"failure": 50,
}
}
]
}
];
const result = data.flatMap(item =>
item.projects.map(project => ({
name: `${item.title}-${project.name}`,
success: project.result.success,
failure: project.result.failure
})));
console.log(result);
uj5u.com熱心網友回復:
您應該flatMap首先使用,因為您將更改元素的數量(從 2 開始,以 3 結束)并且在一個簡單的內部map將每個專案 1:1 轉換為您的最終物件。
作業演示
const data = [{
"title": "Release",
"projects": [{
"name": "Server",
"result": {
"success": 0,
"failure": 100
},
}]
},
{
"title": "Payments",
"projects": [{
"name": "Platform1",
"result": {
"success": 100,
"failure": 0
}
},
{
"name": "Platform2",
"result": {
"success": 50,
"failure": 50,
}
}
]
}
];
var groupedData = data.flatMap((el) =>
el.projects.map((proj) => ({
name: el.title "-" proj.name,
success: proj.result.success,
failure: proj.result.failure,
}))
);
console.log(groupedData);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/353804.html
標籤:javascript 数组 循环 目的 迭代
下一篇:格式問題
