![](/img/trans.png)
[英]Missing App configuration value: "projectId" even though I am passing it in
[英]Data transform if projectId match children and projectId grouped
我需要將所有 projectId 組合在一起,如果 projectId 相同,則孩子應該在當前項目中。 請參閱下圖了解預期的最終結果。
感謝是否有人可以幫助我。 我正在嘗試在構建應用程序功能的同時學習 go。 謝謝你。
當前 Json 格式:
[
{
"projectIds": "1aa",
"children": [
{
"email": "alyssayo@xxx.com",
"permissionIds": null,
"roleIds": [
"raa",
"baa",
"caa"
],
"projectIds": "1aa"
}
]
},
{
"projectIds": "3aa",
"children": [
{
"email": "alyssayo@xxx.com",
"permissionIds": null,
"roleIds": [
"raa",
"baa",
"caa"
],
"projectIds": "3aa"
}
]
},
{
"projectIds": "1aa",
"children": [
{
"email": "chiuewww@xxx.com",
"permissionIds": null,
"roleIds": [
"baa",
"caa"
],
"projectIds": "1aa"
}
]
},
{
"projectIds": "2aa",
"children": [
{
"email": "chiuewww@xxx.com",
"permissionIds": null,
"roleIds": [
"baa",
"caa"
],
"projectIds": "2aa"
}
]
},
{
"projectIds": "3aa",
"children": [
{
"email": "chiuewww@xxx.com",
"permissionIds": null,
"roleIds": [
"baa",
"caa"
],
"projectIds": "3aa"
}
]
},
{
"projectIds": "1aa",
"children": [
{
"email": "lalaqq@xxx.com",
"permissionIds": null,
"roleIds": [
"caa"
],
"projectIds": "1aa"
}
]
}
]
預期 Json 格式:
const data = [
{
projectIds: "1aa",
children: [
{
email: "alyssayo@xxx.com",
permissionIds: null,
roleIds: ["raa","baa","caa"],
projectIds: "1aa",
},
{
email: "chiuewww@xxx.com",
permissionIds: null,
roleIds: ["baa","caa"],
projectIds: "1aa",
},
{
email: "lalaqq@xxx.com",
permissionIds: null,
roleIds: ["caa"],
projectIds: "1aa",
}
]
},
{
projectIds: "2aa",
children: [
{
email: "chiuewww@xxx.com",
permissionIds: null,
roleIds: ["baa","caa"],
projectIds: "2aa",
}
]
},
{
projectIds: "3aa",
children: [
{
email: "alyssayo@xxx.com",
permissionIds: null,
roleIds: ["raa","baa","caa"],
projectIds: "3aa",
},
{
email: "chiuewww@xxx.com",
permissionIds: null,
roleIds: ["baa","caa"],
projectIds: "3aa",
}
]
}
];
你可以使用數組減少和數組查找,
const data = [ { "projectIds": "1aa", "children": [ { "email": "alyssayo@xxx.com", "permissionIds": null, "roleIds": [ "raa", "baa", "caa" ], "projectIds": "1aa" } ] }, { "projectIds": "3aa", "children": [ { "email": "alyssayo@xxx.com", "permissionIds": null, "roleIds": [ "raa", "baa", "caa" ], "projectIds": "3aa" } ] }, { "projectIds": "1aa", "children": [ { "email": "chiuewww@xxx.com", "permissionIds": null, "roleIds": [ "baa", "caa" ], "projectIds": "1aa" } ] }, { "projectIds": "2aa", "children": [ { "email": "chiuewww@xxx.com", "permissionIds": null, "roleIds": [ "baa", "caa" ], "projectIds": "2aa" } ] }, { "projectIds": "3aa", "children": [ { "email": "chiuewww@xxx.com", "permissionIds": null, "roleIds": [ "baa", "caa" ], "projectIds": "3aa" } ] }, { "projectIds": "1aa", "children": [ { "email": "lalaqq@xxx.com", "permissionIds": null, "roleIds": [ "caa" ], "projectIds": "1aa" } ] } ] const findMatch = (arr, projectIds) => arr.find(item => item.projectIds === projectIds) const grouppingArray = (originalArr) => { return Array.isArray(originalArr)? originalArr.reduce((previousObj, obj) => { if (findMatch(previousObj, obj.projectIds)) { findMatch(previousObj, obj.projectIds).children.push(...obj.children) } else { previousObj.push(obj) } return previousObj }, []): 'Need an array' } console.log(grouppingArray(data))
您可以嘗試 array.reduce() 其中 initialData 是您當前的數據
const data = initialData.reduce(function (r, a) {
r[a.projectIds] = r[a.projectIds] || [];
r[a.projectIds].push(a);
return r;
}, Object.create(null));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.