• 根据商品规格筛选商品


    思路:现将规格数组拿到,再让商品数组的每个规格里的每一项规格比较,如果规格数组和某一个商品的规格全部匹配,则渠道改商品的id;

    下边上一些主要代码,太累了,还未整理,主要难点在于,怎么判断规格数组和商品规格匹配,我让每一个商品去和规格数组比较,如果每一项规格项里的规格值都和规格数组匹配,则给一个空数组里添加一个该商品的下标,

    最后判断数组里出现次数最多的值,或者出现次数等于总规格数的值,那么这个值,就是匹配商品的下标,然后拿到该商品的id,最后判断如果没有匹配该规格数组的商品的方法是,将每一个出现在数组里的值得重复次数,依次加到一个新数组里,如果新数组里的值都小于规格总数量,则说明没有该规格的商品;下面上一些代码,以便再次用到可以马上又思路;

    //根据点击的规格获取对应规格商品的id
    var self = this;
    var len=self.productsArr[0].specs.length;//商品的规格总数
    var decide=[];
    var specNameArr=[];//盛放规格名称的数组
    if(self.productSpecArr.length==0){
      var objSpec={};
      objSpec.specName=groupSpec;
      objSpec.specValue=spec;
      self.productSpecArr.push(objSpec);
    }else if(self.productSpecArr.length>0){
      for(var key in self.productSpecArr){
        specNameArr.push(self.productSpecArr[key].specName);//将规格数组的规格名称放到一个数组内
      }
      if(specNameArr.indexOf(groupSpec)>=0){//如果当前点击的商品规格在数组内存在
        for(var j=0;j<self.productSpecArr.length;j++){
          if(self.productSpecArr[j].specName==groupSpec){
            self.productSpecArr[j].specValue=spec;
          }
        }
      }else if(specNameArr.indexOf(groupSpec)<0){//如果数组内不存在这种规格,着添加到数组内
        var objSpec={};
        objSpec.specName=groupSpec;
        objSpec.specValue=spec;
        self.productSpecArr.push(objSpec);
      }
      if(self.productSpecArr.length==len){//如果商品规格选完了,开始根据规格匹配商品
        for(var z=0;z<self.productsArr.length;z++){
          for(var x=0;x<self.productsArr[z].specs.length;x++){
            for(var x=0;x<self.productsArr[z].specs.length;x++){
              for(var y=0;y<self.productSpecArr.length;y++){
                if(self.productsArr[z].specs[x].specName==self.productSpecArr[y].specName&&self.productsArr[z].specs[x].specValue==self.productSpecArr[y].specValue){//判断规格形同
                  decide.push(z)
                }
              }
            }
          }
        }
        // console.log(decide);
        var count = 1;
        var yuansu = new Array(); //存放数组decide的不重复的元素
        var sum = new Array(); //存放数组decide中每个不同元素的出现的次数
        var no=[];//判断没有对应规格的商品
        for(var i = 0; i < decide.length; i++) {
          for(var j = i + 1; j < decide.length; j++) {
            if(decide[i] == decide[j]) {
              count++; //用来计算与当前这个元素相同的个数
              decide.splice(j, 1); //没找到一个相同的元素,就要把它移除掉,
               j--;
            }
        }
        yuansu[i] = decide[i]; //将当前的元素存入到yuansu数组中
        sum[i] = count; //并且将有多少个当前这样的元素的个数存入sum数组中
        count = 1; //再将count重新赋值,进入下一个元素的判断
        if(sum[i]==len){
          self.productId=self.productsArr[yuansu[i]].id;
          console.log(self.productId);
        }
        no.push(sum[i]);
      }
      if(no.every(function(item){
        return(item<len);
      })){
        console.log('改规格商品不存在')
      }
      }
    }
    self.getEffectImage();//拿到商品id后获取效果图
  • 相关阅读:
    ARCproject中加入非ARC文件,或者非ARC环境中加入ARC文件
    【mybatis】mybatis 查询mysql 长编码的查询使用 正向查询和反向查询,避免数据库关系 递归查询的 解决方案
    【spring data jpa】jpa中使用in查询或删除 在@Query中怎么写 ,报错:org.springframework.expression.spel.SpelEvaluationException: EL1007E: Property or field 'goodsConfigUid' cannot be found on null 怎么处理
    【mybatis】 mybatis在mysql 更新update 操作 更新时间字段按照年月日时分秒格式 更新为当前时间
    【spring data jpa】jpa实现update操作 字段有值就更新,没值就用原来的
    【mybatis】mybatis中insert 主键自增和不自增的插入情况【mysql】
    【mybatis】mybatis中update更新原来的值加1
    【mybatis】mybatis 中update 更新操作,null字段不更新,有值才更新
    【spring data jpa】jpa中使用count计数方法
    【mybatis】mybatis方法访问报错:org.apache.ibatis.builder.IncompleteElementException: Could not find result map com.pisen.cloud.luna.ms.goods.base.domain.GoodsConfigQuery
  • 原文地址:https://www.cnblogs.com/fqh123/p/10045889.html
Copyright © 2020-2023  润新知