Javascript——数据处理(异步Promise)

文章讲述了使用JavaScript处理来自不同接口的异步数据,通过`forEach`和`Promise.all`获取和分类数据,然后使用`findDuplicateObjects`函数根据特定字段查找重复项的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//相当于调同一个接口,参数不一样调三次接口,
let arr1 = [];
      newArray.forEach((v, index) => {
        let sqlParams = `select * from alarm_center_info where 1=1 and model_name = '${v.newModel}' and period_time <= '${v.newTime}' and period_time > '${v.minTime}'`;
      arr1[index] = req(sqlParams);
      });

 let firstData = [];
 let secondData = [];
 let threedData = [];
      Promise.all(arr1).then(function(data) {
        //data 返回数组对象[0:{...},1:{..},2:{..}]
        //根据对象里某一个字段区分开三种不同类型的数据
        data.forEach(item => {
           if (item.rows.length !== 0) {
            item.rows.forEach(v => {
              if (
                v.model_name == 'first' 
              ) {
                firstData.push(v);
              } else if (
                v.model_name == 'tow' 
              ) {
                secondData.push(v);
              } else if (v.model_name == 'three') {
                threedData.push(v);
              }
            });
          }
        })
console.log(firstData, '三种不同类型的数据', secondData,  threedData);
//返回结果[{object},{object},{object}.....],[{object}....],[{object},{object}.....]

           function findDuplicateObjects(arr) {
          //根据每个对象里面某一个字段(min_name)判断是否有重复的数据
          let newArr = [];
          arr.forEach(item => {
  //findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。为数组中的每个元素都调用一次函数执行
  //当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
  //如果没有符合条件的元素返回 -1
            let newArrIndex = newArr.findIndex(v => v.name === item.min_name);
            if (newArrIndex === -1) {
              let newArrObj = arr.filter(v => v.name == item.min_name);
              newArr.push({ name: item.min_name, value: newArrObj });
              
            }
          });
          return newArr;
        }
        let oneRepeatList = findDuplicateObjects(firstData);
        let towRepeatList = findDuplicateObjects(secondData);
        let threeRepeatList = findDuplicateObjects(threedData);

        console.log(oneRepeatList,towRepeatList, threeRepeatList, '1111',);
        //返回结果:oneRepeatList:[
         { name:'1',value:[ { id:'1',name:'1',time:'2023-12-09'},{ id:'2',name:'1',time:'2023-01-09'},{},{},{}.....]},
         {{ name:'2',value:[ { id:'0021',name:'1',time:'2023-10-09'},{ id:'2',name:'1',time:'2023-01-09'},{},{},{}.....},
         {{ name:'3',value:[ { id:'3331',name:'1',time:'2023-12-09'},{ id:'3332',name:'1',time:'2023-06-09'},{},{},{}.....}
         .... 
         ]
       

     

     
        
        
      })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值