后台返回的数据机构是这样的:
let list= [
{school_name: "世纪阳天体验学校", school_id: 1, score_level: 1, count: 0, proportion: 0},
{school_name: "世纪阳天体验学校", school_id: 1, score_level: 2, count: 0, proportion: 0},
{school_name: "世纪阳天体验学校", school_id: 1, score_level: 3, count: 0, proportion: 0},
{school_name: "世纪阳天体验学校", school_id: 1, score_level: 4, count: 43, proportion: 1},
{school_name: "世纪守护演示学校", school_id: 2, score_level: 1, count: 0, proportion: 0},
{school_name: "世纪守护演示学校", school_id: 2, score_level: 2, count: 0, proportion: 0},
{school_name: "世纪守护演示学校", school_id: 2, score_level: 3, count: 0, proportion: 0},
{school_name: "世纪守护演示学校", school_id: 2, score_level: 4, count: 64, proportion: 1}
]
let school=[
{index: 0, school_id: 1, school_name: "世纪阳天体验学校"},
{index: 1, school_id: 2, school_name: "世纪守护演示学校"}
]
let title= [
{score_level: 1, level_name: "优秀", max_score: "-", min_score: "-"},
{score_level: 2, level_name: "良好", max_score: "-", min_score: "-"},
{score_level: 3, level_name: "合格", max_score: "-", min_score: "-"},
{score_level: 4, level_name: "不合格", max_score: "180.5", min_score: "28.0"}
]
我所需要的js结构是这样的 :
var arr = [{school_name: "世纪阳天体验学校",count_a: 0,count_b: 0,count_c: 0,count_d: 43,proportion_a: 0,proportion_b: 0,proportion_c: 0,proportion_d: 1},
{school_name: "世纪守护演示学校",count_a: 0,count_b: 0,count_c: 0,count_d: 64,proportion_a: 0,proportion_b: 0,proportion_c: 0,proportion_d: 1}]
直接上代码:
const arr2 = [];
const kes = [
{count: 'count_a', proportion: 'proportion_a'},
{count: 'count_b', proportion: 'proportion_b'},
{count: 'count_c', proportion: 'proportion_c'},
{count: 'count_d', proportion: 'proportion_d'}
];
list.forEach(function(item, i){
let had = false;
arr2.forEach(function(school, j){
if (school.school_name == item.school_name && school.school_id == item.school_id){
had = true;
school[kes[item.score_level-1].count] = item.count;
school[kes[item.score_level-1].proportion] = item.proportion;
}
});
if(!had){
let newSchool = {school_name: item.school_name,school_id:item.school_id};
newSchool[kes[item.score_level-1].count] = item.count;
newSchool[kes[item.score_level-1].proportion] = item.proportion;
arr2.push(newSchool);
}
});