手记

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

这篇文章主要介绍了简单了解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("失败");
              }); 
0人推荐
随时随地看视频
慕课网APP