我在以下結構中有一個初始物件陣列:
let sampleArray = [
{ chairperson: 'Sample person' },
{ chairperson: 'Sample person 2' },
{ arbitratorClaimant: 'Sample person 3' },
{ arbitratorRespondent: 'Sample person 4' },
{ secretary: 'Sample person 5' }
]
我在用
Object.assign({}, ...sampleArray)
將物件陣列組合成一個物件,但由于該物件不能有重復的鍵,它會用第二個主席覆寫第一個主席('Sample person')。相反,我想輸出一個包含多個物件的陣列,其中具有重復鍵的物件被放入陣列中的下一個物件中。例如,這就是我正在尋找的:
[
{
chairperson: 'Sample person',
arbitratorClaimant: 'Sample person 3',
arbitratorRespondent: 'Sample person 4',
secretary: 'Sample person 5'
},
{
chairperson: 'Sample person 2'
}
]
這可能嗎?
uj5u.com熱心網友回復:
在這個例子collated中類似于@CarstenMassmann 的第一個替代資料結構。這很可能是一種過度參與的方式,但代碼的第二部分本質上是對整理的資料進行透視(我認為這是正確的術語),以便它可以用于表行。
let sampleArray = [
{ chairperson: 'Sample person' },
{ chairperson: 'Sample person 2' },
{ arbitratorClaimant: 'Sample person 3' },
{ arbitratorRespondent: 'Sample person 4' },
{ secretary: 'Sample person 5' }
];
const merge_objects = (obj1, obj2) =>
Object.entries(obj2).reduce(
(acc, [key, val]) =>
Object.assign(acc, { [key]: (acc[key] ?? []).concat(val) }),
obj1
);
const collated = sampleArray.reduce(
(acc, val) => merge_objects(acc, val),
{}
);
const max_item_count = (input) =>
Math.max(
...Object.values(input).map((arr) => arr.length)
);
const get_table_rows = (input) =>
Array
.from({ length: max_item_count(input) })
.map(
(row, index) =>
Object.fromEntries(
Object.entries(collated)
.map(([key, val]) => [key, collated[key][index] ?? null])
.filter(([key, val]) => val)
)
);
console.log( JSON.stringify(get_table_rows(collated)) );
uj5u.com熱心網友回復:
這 - 還不是 - 一個答案,而是試圖討論期望的結果。
如何創建如下結果:
{
chairperson: ['Sample person','Sample person 2'],
arbitratorClaimant: 'Sample person 3',
arbitratorRespondent: 'Sample person 4',
secretary: 'Sample person 5'
}
查看您的評論,也許以下內容對您有用:
{
chairperson: 'Sample person, Sample person 2',
arbitratorClaimant: 'Sample person 3',
arbitratorRespondent: 'Sample person 4',
secretary: 'Sample person 5'
}
, 可以為多個名稱的串列選擇任何其他分隔符,而不是“ ”
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/417441.html
標籤:
下一篇:如何解構我的多個物件陣列
