记录一段table的js逻辑判断(详情见下图)

本文详细解析了如何将复杂的后台返回数据转换为简洁的JS数组结构,通过具体代码实例展示了数据处理过程,适用于数据可视化及报表展示场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述
后台返回的数据机构是这样的:

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);
        }
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值