vue数组去重复,排序,判断周,循环请求接口按顺序执行方法

//数据去重复
const unique=(arr1)=>{
			const res = new Map();
			return arr1.filter((a) => !res.has(a.siteId) && res.set(a.siteId, 1))
		},

//冒泡排序
const bSort=(arr)=>{
    var len = arr.length;
    for (var i = 0; i < len-1; i++) {
        for (var j = 0; j < len - 1 - i; j++) {
            // 相邻元素两两对比,元素交换,大的元素交换到后面
            if (arr[j] > arr[j + 1]) {
                var temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
    return arr;
  }

//传入日期判断第几周
const handleYearWeek =(dt)=>{
    let d1 = new Date(dt);
    let d2 = new Date(dt);
        d2.setMonth(0);
        d2.setDate(1);
        let rq = d1-d2;
        let days = Math.ceil(rq/(24*60*60*1000));
        let num = Math.ceil(days/7);
        return num;
}

//同步请求接口 
 const PromiseForEach=(arr,cb)=>{
    let realResult = []
    let result = Promise.resolve()
    arr.forEach((a, index) => {
      result = result.then(() => {
        return cb(a).then((res) => {
          realResult.push(res)
        })
      })
    })
    return result.then(() => {
      return realResult
    })
  }
/*同步方法调用*/
let mval=this.parameter.Month.split("-");
this.$GlobalFun.PromiseForEach(_self.waterData, (i) => {
                return new Promise((resolve, reject) => {                                 
                  setTimeout(() => {
                    let attribute = {
                        type:'2',
                        siteId: i.siteId,
                        monitorTime: mval[1],
                        level:'5',       
                        year:mval[0]
                    }; 
                    API_REPORT.detailInfo(attribute).then(result => { 
                    if(result.code == '200'){  
                      this.tableData.push(result.data);
                      waterDataindex++;
                        if(waterDataindex==_self.waterData.length){
                          for(let j=0;j<result.data.length;j++){
                              if(result.data[j].indexNum.toFixed(2)>1){
                                this.tarpol.push(result.data[j])
                              }
                          }
                        }                                                          
                    }else{
                      return false;
                    }            
                  })                                 
                  return resolve(i);
                  }, 100);                 
                })
              }).then((data) => {
                 
              }).catch((err) => {
                console.log("失败");
              }); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值