我有一個物件,就像
[{
Date: 01/11/2022,
Questionnaire: [
{Title: 'Rating', Ans: '5' },
{Title: 'Comment', Ans: 'Awesome' }
]
},
{
Date: 01/11/2022,
Questionnaire: [
{Title: 'Rating', Ans: '2' },
{Title: 'Comment', Ans: 'Bad' }
]
},
{
Date: 09/12/2022,
Questionnaire: [
{Title: 'Rating', Ans: '3' },
{Title: 'Comment', Ans: 'Okay' }
]
}]
我正在嘗試創建一個看起來像的新物件
[{
Date: 01/11/2022
Ratings: ['5', '2']
},
{
Date: 09/12/2022
Ratings: ['3']
}]
我正在嘗試按日期過濾它并獲取該特定日期的所有評級
uj5u.com熱心網友回復:
您可以首先Array#reduce創建一個陣列來創建一個字典物件來對元素進行分組Date,然后Array#map在它之上重新創建物件陣列。
const group = (arr) =>
Object.entries(arr.reduce((acc, { Questionnaire, Date }) => {
const [{ Ans }] = Questionnaire;
(acc[Date] || (acc[Date] = [])).push(Ans);
return acc;
}, {})).map(([date, rating]) => ({ Date: date, Ratings: rating }));
const res = group([{Date:'01/11/2022',Questionnaire:[{Title:'Rating',Ans:'5'},{Title:'Comment',Ans:'Awesome'}]},{Date:'01/11/2022',Questionnaire:[{Title:'Rating',Ans:'2'},{Title:'Comment',Ans:'Bad'}]},{Date:'09/12/2022',Questionnaire:[{Title:'Rating',Ans:'3'},{Title:'Comment',Ans:'Okay'}]}]);
console.log(res);
uj5u.com熱心網友回復:
有很多沒有依賴關系的方法,但是如果您發現這些問題很困難,我建議您查看 lodash 庫。
Date: 01/11/2022,
Questionnaire: [
{Title: 'Rating', Ans: '5' },
{Title: 'Comment', Ans: 'Awesome' }
]
},
{
Date: 01/11/2022,
Questionnaire: [
{Title: 'Rating', Ans: '2' },
{Title: 'Comment', Ans: 'Bad' }
]
},
{
Date: 09/12/2022,
Questionnaire: [
{Title: 'Rating', Ans: '3' },
{Title: 'Comment', Ans: 'Okay' }
]
}]
const output = _.chain(data)
.groupBy('Date')
.map((v,k) => ( {Date: v[0].Date, Ratings: v.map(o => o.Questionnaire.find(q => q.Title === 'Rating')).map(v2 => v2.Ans)}))
.value()
console.log(output)```
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/531005.html
上一篇:從物件值替換陣列的相似項
下一篇:字串被垃圾填滿
