我想使用reduce函式中的輸入陣列來輸出陣列。但我無法設法動態添加這樣的鍵“ ${keyOrigin}”:cur.value})
謝謝你的幫助 !<3
const input = [{
date: '10/03/40922',
origin: 'Angleterre',
value: 39
},
{
date: '10/03/40922',
origin: 'Espagne',
value: 60
},
{
date: '10/03/40922',
origin: 'Argentine',
value: 54
},
{
date: '10/03/40922',
origin: 'Italie',
value: 45
},
{
date: '10/03/40922',
origin: 'Hollande',
value: 40
},
{
date: '10/03/40922',
origin: 'Russie',
value: 110
},
{
date: '10/03/40922',
origin: 'Suisse',
value: 87
},
{
date: '10/03/40922',
origin: 'France',
value: 143
},
{
date: '11/03/40922',
origin: 'Angleterre',
value: 39
},
{
date: '11/03/40922',
origin: 'Espagne',
value: 60
},
{
date: '11/03/40922',
origin: 'Argentine',
value: 54
},
{
date: '11/03/40922',
origin: 'Italie',
value: 45
},
{
date: '11/03/40922',
origin: 'Hollande',
value: 40
},
{
date: '11/03/40922',
origin: 'Russie',
value: 110
},
{
date: '11/03/40922',
origin: 'Suisse',
value: 87
},
{
date: '11/03/40922',
origin: 'France',
value: 143
}
];
const output = [{
date: "10/03/40922",
Angleterre: 39,
Espagne: 60,
Argentine: 54,
Italie: 45,
Hollande: 40,
Russie: 110,
Suisse: 97,
France: 143
},
{
date: "11/03/40922",
Angleterre: 39,
Espagne: 60,
Argentine: 54,
Italie: 45,
Hollande: 40,
Russie: 110,
Suisse: 97,
France: 143
},
];
const reduceByDate = (array) => {
const result = Array.from(
array
.reduce((acc, cur) => {
const key = JSON.stringify(cur.date);
const current = acc.get(key) || {
date: cur.date
};
const keyOrigin = JSON.stringify(cur.origin);
return acc.set(key, { ...current,
"`${keyOrigin}`": cur.value
});
}, new Map())
.values()
);
return result;
};
console.log(reduceByDate(input))
uj5u.com熱心網友回復:
您打算使用計算的屬性名稱
{ ...current, [cur.origin]: cur.value })
也不需要字串化 - 簡化 - 如果我多花一點時間,我相信我什至可以擺脫地圖:
const reduceByDate = array => [...array
.reduce((acc, cur) => {
const date = cur.date;
const current = acc.get(date) || { date };
return acc.set(date, { ...current, [cur.origin]: cur.value });
}, new Map())
.values()];
顯示代碼片段
const reduceByDate = array => [...array
.reduce((acc, cur) => {
const date = cur.date;
const current = acc.get(date) || { date };
return acc.set(date, { ...current, [cur.origin]: cur.value });
}, new Map())
.values()];
console.log(reduceByDate(input))
<script>
const input = [
{ date: '10/03/40922', origin: 'Angleterre', value: 39 },
{ date: '10/03/40922', origin: 'Espagne', value: 60 },
{ date: '10/03/40922', origin: 'Argentine', value: 54 },
{ date: '10/03/40922', origin: 'Italie', value: 45 },
{ date: '10/03/40922', origin: 'Hollande', value: 40 },
{ date: '10/03/40922', origin: 'Russie', value: 110 },
{ date: '10/03/40922', origin: 'Suisse', value: 87 },
{ date: '10/03/40922', origin: 'France', value: 143 },
{ date: '11/03/40922', origin: 'Angleterre', value: 39 },
{ date: '11/03/40922', origin: 'Espagne', value: 60 },
{ date: '11/03/40922', origin: 'Argentine', value: 54 },
{ date: '11/03/40922', origin: 'Italie', value: 45 },
{ date: '11/03/40922', origin: 'Hollande', value: 40 },
{ date: '11/03/40922', origin: 'Russie', value: 110 },
{ date: '11/03/40922', origin: 'Suisse', value: 87 },
{ date: '11/03/40922', origin: 'France', value: 143 }
];</script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/473184.html
標籤:javascript 字典 减少
上一篇:如何向輸入字典添加別名?
下一篇:從一個鍵和元組串列創建字典
