js 数组的处理?

作者站长头像
站长
· 阅读数 15
    let arr = [
      { areaId: 43, areaLevel: 0, areaName: "湖南" },
      { areaId: 4301, areaLevel: 1, areaName: '长沙' },
      { areaId: 430102, areaLevel: 2, areaName: '芙蓉' },
      { areaId: 430103, areaLevel: 2, areaName: '天心' },
      { areaId: 4303, areaLevel: 1, areaName: '湘潭' },
      { areaId: 430302, areaLevel: 2, areaName: '雨湖' },
      { areaId: 430304, areaLevel: 2, areaName: '岳塘' }
    ];

根据areaLevel 来过滤想得到

    let arr = [
      { areaId: 430102, province: "湖南", city: "长沙", area: "芙蓉" },
      { areaId: 430103, province: "湖南", city: "长沙", area: "天心" },
      { areaId: 430302, province: "湖南", city: "湘潭", area: "雨湖" },
      { areaId: 430304, province: "湖南", city: "湘潭", area: "岳塘" },
    ];

麻烦各位大佬帮忙看看

回复
1个回答
avatar
test
2024-07-16
let areanames = arr.reduce((o, item) => ((o[item.areaId] = item.areaName), o), {})
arr.filter(i => i.areaLevel == 2).map(i => {
    let areaId = i.areaId
    return {
        areaId: areaId,
        province: areanames[String(areaId).slice(0, 2)] || '',
        city: areanames[String(areaId).slice(0, 4)] || '',
        area: i.areaName
    }
})
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容