我有一個物件陣列,如下所示。目前只有一個物件,但呼叫有一組物件。
根據我們擁有的物件陣列的數量invocations,我們想要更新物件的主陣列。例如,如果有 2 個物件invocations,我想分離這 2 個呼叫并為兩者復制它們的父物件invocations。
這不是物件陣列的常規迭代,這就是我無法獲得所需結果的原因。任何幫助表示贊賞
const input = [
{
"name": "Test Data",
"invocations": [
{ "invocationId": "123" },
{ "invocationId": "125" },
]
},
]
const output = [
{
"name": "Test Data",
"invocations": [
{ "invocationId": "123" },
]
},
{
"name": "Test Data",
"invocations": [
{ "invocationId": "125" },
]
}
]
uj5u.com熱心網友回復:
這是一個非單行的作業示例!
對于陣列中的每個物件,回圈遍歷invocations屬性陣列并將每個物件與所有其他屬性一起推送到臨時陣列中。
然后將該陣列與最終陣列連接起來。
const input = [
{
"name": "Test Data",
"invocations": [
{ "invocationId": "123" },
{ "invocationId": "125" },
]
},
]
let finalArray = []
Object.values(input).forEach(obj => {
let arr = []
obj.invocations.forEach(invoc => arr.push({...obj, invocations: [ invoc ]}))
finalArray = finalArray.concat(arr)
});
console.log(finalArray)
uj5u.com熱心網友回復:
這將做到:
const splitInvocations = array => {
return array.reduce((result, obj) => {
const parentAssignedObjects = obj.invocations.map(invocation => ({ ...obj, invocations: [invocation] }));
return [...result, ...parentAssignedObjects];
}, []);
};
首先,我們用 回圈遍歷陣列reduce。然后,我們map每次呼叫并回傳帶有屬性替換值的父物件invocations。我們將 reduce 累加器與mapusing的輸出連接起來spread syntax。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects /Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524744.html
