数据处理(接口返回数据两条为一组)

 数据处理,findIndex的应用,filter的应用,find的应用,reduce的应用

 

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
  <style>
    * {
      padding: 0;
      margin: 0;
    }

    .listbox {
      border: 1px solid red;
    }

    .listbox>div {
      min-height: 30px;
      background: #f5f5f5;
      margin-top: 10px;
    }

    .listbox .listitem span {
      display: inline-block;
      width: 100px;
    }
  </style>
</head>

<body>
  <div class="box1"></div>
  <div class="box2"></div>
  <select name="city" id="" class="select"></select>
  <div class="listbox">
    <div>
      <div class="title">中心城区</div>
      <div class="listitem list1"></div>
    </div>
    <div>
      <div class="title">副中心</div>
      <div class="listitem list1"></div>
    </div>
    <div>
      <div class="title">平原新城</div>
      <div class="listitem list1"></div>
    </div>
    <div>
      <div class="title">生态涵养区</div>
      <div class="listitem list1"></div>
    </div>
  </div>
  <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
  <script>
    var data = [
      {
        "name": "地区生产总值",
        "V": "568.7",
        "area": "通州区",
        "areaCode": "110112"
      },
      {
        "name": "同比增减",
        "V": "4.1",
        "area": "通州区",
        "areaCode": "110112"
      },
      {
        "name": "地区生产总值",
        "V": "206.7",
        "area": "怀柔区",
        "areaCode": "110116"
      },
      {
        "name": "同比增减",
        "V": "4.1",
        "area": "怀柔区",
        "areaCode": "110116"
      },
      {
        "name": "地区生产总值",
        "V": "4970.2",
        "area": "海淀区",
        "areaCode": "110108"
      },
      {

        "name": "同比增减",
        "V": "3.6",
        "area": "海淀区",
        "areaCode": "110108"
      },
      {
        "name": "地区生产总值",
        "V": "123.5",
        "area": "门头沟区",
        "areaCode": "110109"
      },
      {
        "name": "同比增减",
        "V": "1.2",
        "area": "门头沟区",
        "areaCode": "110109"
      },
      {
        "name": "地区生产总值",
        "V": "3623.8",
        "area": "朝阳区",
        "areaCode": "110105"
      },
      {
        "name": "同比增减",
        "V": "0.4",
        "area": "朝阳区",
        "areaCode": "110105"
      },
      {
        "name": "地区生产总值",
        "V": "1603.4",
        "area": "东城区",
        "areaCode": "110101"
      },
      {
        "name": "同比增减",
        "V": "6.8",
        "area": "东城区",
        "areaCode": "110101"
      },
      {
        "name": "地区生产总值",
        "V": "369.6",
        "area": "房山区",
        "areaCode": "110111"
      },
      {
        "name": "同比增减",
        "V": "2.9",
        "area": "房山区",
        "areaCode": "110111"
      },
      {
        "name": "地区生产总值",
        "V": "96.4",
        "area": "延庆区",
        "areaCode": "110119"
      },
      {
        "name": "同比增减",
        "V": "2.9",
        "area": "延庆区",
        "areaCode": "110119"
      },
      {
        "name": "地区生产总值",
        "V": "983",
        "area": "顺义区",
        "areaCode": "110113"
      },
      {
        "name": "同比增减",
        "V": "0.2",
        "area": "顺义区",
        "areaCode": "110113"
      },
      {
        "name": "地区生产总值",
        "V": "180.3",
        "area": "平谷区",
        "areaCode": "110117"
      },
      {
        "name": "同比增减",
        "V": "9.2",
        "area": "平谷区",
        "areaCode": "110117"
      },
      {
        "name": "地区生产总值",
        "V": "489.5",
        "area": "大兴区",
        "areaCode": "110115"
      },
      {
        "name": "同比增减",
        "V": "-25",
        "area": "大兴区",
        "areaCode": "110115"
      },
      {
        "name": "地区生产总值",
        "V": "1122",
        "area": "北京经济技术开发区",
        "areaCode": "110160"
      },
      {
        "name": "同比增减",
        "V": "-10.8",
        "area": "北京经济技术开发区",
        "areaCode": "110160"
      },
      {
        "name": "地区生产总值",
        "V": "165",
        "area": "密云区",
        "areaCode": "110118"
      },
      {
        "name": "同比增减",
        "V": "0.4",
        "area": "密云区",
        "areaCode": "110118"
      },
      {
        "name": "地区生产总值",
        "V": "585.4",
        "area": "昌平区",
        "areaCode": "110114"
      },
      {
        "name": "同比增减",
        "V": "0.8",
        "area": "昌平区",
        "areaCode": "110114"
      },
      {
        "name": "地区生产总值",
        "V": "941.1",
        "area": "丰台区",
        "areaCode": "110106"
      },
      {
        "name": "同比增减",
        "V": "0.5",
        "area": "丰台区",
        "areaCode": "110106"
      },
      {
        "name": "地区生产总值",
        "V": "445.1",
        "V_21_00": "445.1",
        "area": "石景山区",
        "areaCode": "110107"
      },
      {
        "name": "同比增减",
        "V": "1.4",
        "area": "石景山区",
        "areaCode": "110107"
      },
      {
        "name": "地区生产总值",
        "V": "2556.6",
        "area": "西城区",
        "areaCode": "110102"
      },
      {
        "name": "同比增减",
        "V": "3.9",
        "area": "西城区",
        "areaCode": "110102"
      }
    ]
    console.log('需求:接口返回的数据两条数据为一组,整理数据后显示')
    var area = '房山区'
    var listall = []
    var list1 = [
      {
        name: '朝阳区',
      },
      {
        name: '丰台区',
      },
      {
        name: '石景山区',
      },
      {
        name: '海淀区',
      },
      {
        name: '东城区',
      },
      {
        name: '西城区',
      }
    ]
    var list2 = [
      {
        name: '通州区',
      }
    ]
    var list3 = [
      {
        name: '房山区',
      },
      {
        name: '顺义区',
      },
      {
        name: '昌平区',
      },
      {
        name: '大兴区',
      },
      {
        name: '经开区',
      }
    ]
    var list4 = [
      {
        name: '门头沟区',
      },
      {
        name: '怀柔区',
      },
      {
        name: '平谷区',
      },
      {
        name: '密云区',
      },
      {
        name: '延庆区',
      }
    ]

    let arr1 = []
    let arr2 = []
    let arr3 = []
    let arr4 = []
    let citytotal = 0;
    var newData = []
    let Ndata = data.map(item => {
      if (item.area == '北京经济技术开发区') {
        item.area = '经开区'
      }
      return item
    })
    console.log('1、得到整理后的新数据', Ndata)
    while (Ndata && Ndata.length > 0) {
      var it = Ndata.slice(0, 2)
      newData.push(it)
      Ndata = Ndata.slice(2)
    }
    console.log('2、两条数据为一组得到整理后的新数据', newData)
    citytotal = newData.reduce((prev, next) => {
      return prev + Number(next[0].V);
    }, 0);

    newData.forEach(item => {
      listall.push({
        name: item[0].area,
        outputValue: item[0].V,
        zs: item[1].V,
        zqs: item[0].V / citytotal * 100
      })
      list1.forEach(d => {
        if (item[0].area == d.name) {
          arr1.push({
            name: d.name,
            outputValue: item[0].V,
            zs: item[1].V,
            zqs: item[0].V / citytotal * 100
          })
        }
      })
      list2.forEach(d => {
        if (item[0].area == d.name) {
          arr2.push({
            name: d.name,
            outputValue: item[0].V,
            zs: item[1].V
          })
        }
      })
      list3.forEach(d => {
        if (item[0].area == d.name) {
          arr3.push({
            name: d.name,
            outputValue: item[0].V,
            zs: item[1].V
          })
        }
      })
      list4.forEach(d => {
        if (item[0].area == d.name) {
          arr4.push({
            name: d.name,
            outputValue: item[0].V,
            zs: item[1].V
          })
        }
      })
    });
    console.log('3、和list1、list2、list3、list4匹配后得到新数据')
    arr1.sort((a, b) => b.outputValue - a.outputValue)
    arr2.sort((a, b) => b.outputValue - a.outputValue)
    arr3.sort((a, b) => b.outputValue - a.outputValue)
    arr4.sort((a, b) => b.outputValue - a.outputValue)
    console.log('4、从大到小排序后得到新数据')
    let shtml = ''
    for (let i = 0; i < arr1.length; i++) {
      shtml += `<div><span>${arr1[i].name}</span> <span>${arr1[i].outputValue}亿元</span> <span>${arr1[i].zs}%</span></div>`
    }
    $('.list1').html(shtml)
    let shtml2 = ''
    for (let i = 0; i < arr2.length; i++) {
      shtml2 += `<div><span>${arr2[i].name}</span> <span>${arr2[i].outputValue}亿元</span> <span>${arr2[i].zs}%</span></div>`
    }
    $('.list2').html(shtml2)
    let shtml3 = ''
    for (let i = 0; i < arr3.length; i++) {
      shtml3 += `<div><span>${arr3[i].name}</span> <span>${arr3[i].outputValue}亿元</span> <span>${arr3[i].zs}%</span></div>`
    }
    $('.list3').html(shtml3)
    let shtml4 = ''
    for (let i = 0; i < arr4.length; i++) {
      shtml4 += `<div><span>${arr4[i].name}</span> <span>${arr4[i].outputValue}亿元</span> <span>${arr4[i].zs}%</span></div>`
    }
    $('.list4').html(shtml4)

    listall.sort((a, b) => b.outputValue - a.outputValue)

    let selHtml = ''
    for (let i = 0; i < listall.length; i++) {
      selHtml += `<option value="${listall[i].name}">${listall[i].name}</option>`
    }
    $('.select').html(selHtml)
    $('select[name=city]').val(area);
    $("select[name='city']").change(function () {
      area = $(this).val()
      init()
    });
    function init() {
      let curitem = listall.filter(item => item.name == area);
      let ind = listall.findIndex(item => item.name == area);
      console.log('5、得到数据,占全市' + curitem[0].zqs.toFixed(2) + '排名' + (ind + 1))
      $('.box1').text('占全市' + curitem[0].zqs.toFixed(2) + ' 排名' + (ind + 1))
      let arr1Totle1 = 0
      let arr1Totle2 = 0
      let arr1Totle3 = 0
      let arr1Totle4 = 0
      arr1Totle1 = arr1.reduce((prev, next) => {
        return prev + Number(next.outputValue);
      }, 0);
      arr1Totle2 = arr2.reduce((prev, next) => {
        return prev + Number(next.outputValue);
      }, 0);
      arr1Totle3 = arr3.reduce((prev, next) => {
        return prev + Number(next.outputValue);
      }, 0);
      arr1Totle4 = arr4.reduce((prev, next) => {
        return prev + Number(next.outputValue);
      }, 0);
      let zqqNum = 0
      let zqqpm = 0
      arr1.forEach(item => {
        if (item.name == area) {
          zqqNum = item.outputValue / arr1Totle1 * 100
          zqqpm = arr1.findIndex(item => item.name == area);
        }
      })
      arr2.forEach(item => {
        if (item.name == area) {
          zqqNum = item.outputValue / arr1Totle2 * 100
          zqqpm = arr2.findIndex(item => item.name == area);
        }
      })
      arr3.forEach(item => {
        if (item.name == area) {
          zqqNum = item.outputValue / arr1Totle3 * 100
          zqqpm = arr3.findIndex(item => item.name == area);
        }
      })
      arr4.forEach(item => {
        if (item.name == area) {
          zqqNum = item.outputValue / arr1Totle4 * 100
          zqqpm = arr4.findIndex(item => item.name == area);
        }
      })



      let txt = ''
      if (arr1.find(item => item.name == area)) txt = '中心城区'
      if (arr2.find(item => item.name == area)) txt = '副中心'
      if (arr3.find(item => item.name == area)) txt = '平原新城'
      if (arr4.find(item => item.name == area)) txt = '生态涵养区'

      console.log('6、得到数据,占' + txt + zqqNum.toFixed(2) + '排名' + (zqqpm + 1))
      $('.box2').text('占' + txt + zqqNum.toFixed(2) + '排名' + (zqqpm + 1))
    }

    init()
  </script>
</body>

</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值