首页 前端知识 js数组对象按照特定顺序补全缺失内容

js数组对象按照特定顺序补全缺失内容

2024-06-03 12:06:47 前端知识 前端哥 616 707 我要收藏

 最近在写echarts的过程中, 遇到后端返回的数据, 格式类似于以上, 渲染成折线图, 这种数据格式不太符合echarts折线图所需的数据格式, 把返回的数据按照baseYear, 再按照baseName 进行双重排序, 对缺失的部分后端不返回, 只能我们自己写方法补全了.

let baseYear = [2015, 2016, 2017, 2018, 2019],
  baseName = ['空军', '海军', '陆军', '火箭军'],
  arrList = [
    { year: 2015, unitsName: '空军', value: 20 },
    { year: 2015, unitsName: '火箭军', value: 20 },

    { year: 2016, unitsName: '空军', value: 20 },
    { year: 2016, unitsName: '海军', value: 20 },
    { year: 2016, unitsName: '陆军', value: 20 },
    { year: 2016, unitsName: '火箭军', value: 20 },

    { year: 2017, unitsName: '空军', value: 20 },
    { year: 2017, unitsName: '海军', value: 20 },

    { year: 2018, unitsName: '空军', value: 20 },
    { year: 2018, unitsName: '陆军', value: 20 },

    { year: 2019, unitsName: '火箭军', value: 20 },
  ],
  arrContent = [] // 最终需要的数据
for (var i = 0; i < baseYear.length; i++) { // 以年份为基础
  let data = []
  let yearGroup = arrList.filter((item) => {
    return item.year == baseYear[i] // 把每一个年份相同的取出来放到一个数组
  })
  for (var j = 0; j < baseName.length; j++) {  // 对同年数组进行校验
    if (!(yearGroup[j] && yearGroup[j].unitsName === baseName[j])) { // 校验同年数组在对应index是否有baseName
      yearGroup.splice(j, 0, { year: baseYear[i], unitsName: baseName[j], value: 0 })
    }
  }
  arrContent.push(yearGroup)
}
console.log(arrContent)

 最后返回如上数据格式

转载请注明出处或者链接地址:https://www.qianduange.cn//article/10623.html
标签
评论
发布的文章

vue学习计划

2024-06-08 18:06:08

fastjson1.2.24-RCE漏洞复现

2024-06-08 09:06:33

JsonPath用法详解

2024-06-08 09:06:55

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!