• 自己写的数组 方法的组合使用


    //注意,使用map返回的新数组的长度,和原数组的长度是一致的,,  可以结合filter先筛选出来符合条件的,然后在使用map来返回需要的数据,        
     
    //用map 循环数组,然后,找到每一向的,数组,再用map循环,拿到二次循环的数组元素,然后以对象的形式取出里边需要的东西,并且返回,因为map返回的
      是数组,所以在最后用了flat()来展开数组,让数组元素全都是对象,最后使用,reduce去重复
            var obj = {};//用来去重
            let activeListArray1=cart_goods_list.map((item,index,arr)=>{
              return item.promotion.map((item1)=>{
                    return {"promot_id":item1.promot_id,"promot_name":item1.promot_name,"type":"promotion"}
              })
            }).flat().reduce(function(item,next){
              obj[next.promot_id] ? "" : obj[next.promot_id] = true && item.push(next);
              return item
            },[]);
            console.log(activeListArray1)
            //获取购物车商品每个商品的单品促销活动名称 并且去重
      //先使用filter选出原数组中符合条件的元素,返回符合条件的数组,然后使用map循环符合条件的数组,符合条件数组的元素里又有数组,所以内部又使用
      map来循环里边的数组,然后取出里边要的信息,返回
            var obj2 = {};
            let activeArray2 = cart_goods_list.filter(item=>item.activity.length>0).map((item,index,arr)=>{
              return item.activity.map((item2,index2,arr2)=>{
                return {"promot_id":item2.activity_id,"promot_name":item2.activity_name,"type":"activity"}
              })
            }).flat().reduce(function(item,next){
              obj[next.promot_id] ? "" : obj[next.promot_id] = true && item.push(next);
              return item
            },[]);
            console.log(activeArray2);
            // 合并两个活动的名称
            activeListArray1 = [...activeListArray1,...activeArray2,...[{"promot_id":0,"promot_name":"暂无活动"}]];
            console.log(activeListArray1);
            // 遍历商品,分类放
      这里使用forEach来循环,所有活动的数组,在循环里,使用filter来过滤,商品列表里,和,活动ID一致的商品,然后使用,forEach
      的参数,把filter返回的数组,添加到自己的每个对象的数组中
            activeListArray1.forEach(function(item,index,arr){
              // arr[index].productList = cart_goods_list.filter(item1=>item1.promotion.length>0?item1.promotion[0].promot_id==arr[index].promot_id:null);
              arr[index].productList = cart_goods_list.filter(item1=>{
                if(item1.promotion.length>0){return item1.promotion[0].promot_id==arr[index].promot_id}else if(item1.promotion.length==0&&item1.activity.length>0)
                {return item1.activity[0].activity_id==arr[index].promot_id}else{
                  return item1.promotion.length==arr[index].promot_id&&item1.activity.length==arr[index].promot_id}
              });         
            });
            console.log(activeListArray1);
            that.setData({
            activeListArray1
            }) 
  • 相关阅读:
    【转】CRC校验
    【转】MapReduce程序的工作过程
    【转】hadoop机架感知
    【转】git常用命令
    Code Examples for scala actor link
    【转】ThreadLocal原理及其实际应用
    【转】scala解惑: 偏函数与部分应用函数
    (九)Maven坐标详解
    (八)Eclipse创建Maven项目运行mvn命令
    (七)Maven使用的最佳实践
  • 原文地址:https://www.cnblogs.com/zzhqdkf/p/12793570.html
Copyright © 2020-2023  润新知