如何使用一个公共字段提取数据并在javascript中制作嵌套的json
我有一个这样的数组:
var arr = [{
"date" : "2021-07-01",
"Subject" : "Math",
"index" : 1
},{
"date" : "2021-07-02",
"Subject" : "Social",
"index" : 2
},{
"date" : "2021-07-01",
"Subject" : "Science",
"index" : 3
},{
"date" : "2021-07-02",
"Subject" : "Economics",
"index" : 4
},{
"date" : "2021-07-01",
"Subject" : "English",
"index" : 5
},{
"date" : "2021-07-02",
"Subject" : "Computer",
"index" : 6
}]
结果我想要一个这样的数组
arr = [{
date: "2021-07-01",
data : [{subject : "Math", "index" : 1},{subject : "Science", "index" : 3},{subject : "English", "index" : 5}]
},{
date: "2021-07-02",
data : [{subject : "Social", "index" : 2},{subject : "Economics", "index" : 4},{subject : "Computer", "index" : 6}]
}]
这是我正在尝试的
var checkData = [];
var resultArr;
for(var i=0; i<arr.length; i++){
if(checkData.indexOf(arr[0].date) !== -1) {
// not getting data
}else{
checkData.push(arr[0].date);
resultArr.date = arr[0].date;
resultArr.data = {"index" : arr[0].index, "subject" : arr[0].subject};
}
}
任何帮助我怎么能做到这一点。
// fetch unique dates
const uniqueDates = arr.reduce((acc, rec) => {
if(acc.includes(rec.date))
return acc;
return [...acc, rec.date]
}, [])
//build your object
const result = uniqueDates.reduce((acc, rec)=> {
const data = arr.filter(i => i.date === rec).map(i => {
delete i.date
return i
})
return [...acc, {date: rec, data}]
}, [])
console.log(JSON.stringify(result, 2, 2))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句