![](/img/trans.png)
[英]How to convert a javascript array of Objects from one format to another format?
[英]How can I sort / map / filter the following javascript array of objects from one format to another
我有
const daterange = ["2021-01", "2021-02", "2021-03", "2021-04", "2021-05"]
const personData = [
{
"2021-05": 3,
"2021-04": 7,
"2021-03": 4,
"2021-02": 14,
"2021-01": 7
"person": {
name: 'john',
age: 33
},
},
{
"2021-05": 1,
"2021-04": 2,
"2021-03": 3,
"2021-02": 4,
"2021-01": 9
"person": {
name: 'sarah',
age: 50
},
},
{
"person": {
name: 'mark',
age: 14
},
},
]
我希望它看起來像這樣
const formatted = [
{
date: '2021-01',
john: 7,
sarah: 9,
mark: 0,
},
{
month: '2021-02',
john: 14,
sarah: 4,
mark: 0,
},
... ALL THE OTHER MONTHS IN THE daterange shown here
],
日期范圍可能會更改,如果 personData 中沒有數據,則應為該人的每個月分配一個 0(零)值
我嘗試過在 dateRange 上進行映射,然后在 personData 中尋找匹配項(hasOwnProperty),但它不起作用。
編輯。
由於 Andreas 發牢騷,我添加了我所擁有的,但我不確定它對任何人都有幫助。 我被卡住了,這就是重點嗎?
daterange.map((date) => {
personData.map((person) => {
person.hasOwnProperty(date) === true
}
})
您需要循環數月並通過遍歷人員數據為每個月構建一個 object
const formatted = daterange.map(month => {
const result = {
month,
}
personData.forEach(personData => {
if (personData[month] != null) {
result[personData.name] = personData[month];
} else {
result[personData.name] = 0;
}
});
return result;
})
試試這個解決方案
const format = (range, data) => {
return range.map(month => {
return data.reduce((prev, cur) => {
prev[cur.person.name] = cur[month] ?? 0;
return prev;
}, { date: month })
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.