根据商品规格筛选商品
Posted fqh123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了根据商品规格筛选商品相关的知识,希望对你有一定的参考价值。
思路:现将规格数组拿到,再让商品数组的每个规格里的每一项规格比较,如果规格数组和某一个商品的规格全部匹配,则渠道改商品的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后获取效果图
以上是关于根据商品规格筛选商品的主要内容,如果未能解决你的问题,请参考以下文章
小程序-搜索商品-历史记录 有并清除-根据销量-价格筛选过滤