这里用到了一个二维数组, 因为集合的个数不一定数组的一维的length就是集合的个数, 二维是用来保存商品有的促销活动
主要思想是
1: 获取所有数组中最小的长度(length最小)的数组
2: 定义一个计数器, 循环判断数组中存在存在最小数组中的数组, 存在计数器++
3: 判断计数器的数与原数组个数一致,则该数据是交集中的数据
/** 商品的促销信息 */
function getItemPromotionInfo(itemIds, itemLogoMarkArrays){
for(var i in itemIds){
var count = 0;
var itemId = itemIds[i];
var promotionCommandList = itemPromotionJson[itemId];
for(var j in promotionCommandList){
var logo = promotionCommandList[j].logo;
if(logo == '' || logo == null){
continue;
}
var logoMark = promotionLogoMarkJson[logo];
itemLogoMarkArrays[i][count] = logoMark;
count++;
}
}
/** 获得同款商品的促销活动的交集 */
// 获取同款商品有促销活动最小的集合
var minLengthArray = new Array();
if(itemLogoMarkArrays.length > 1){
for(var i=0; i<itemLogoMarkArrays.length-1; i++){
if(minLengthArray != ''){
if(minLengthArray.length >= itemLogoMarkArrays[i+1].length){
minLengthArray = itemLogoMarkArrays[i+1];
}
}else{
if(itemLogoMarkArrays[i].length >= itemLogoMarkArrays[i+1].length){
minLengthArray = itemLogoMarkArrays[i+1];
}else{
minLengthArray = itemLogoMarkArrays[i];
}
}
}
}
// 获得同款商品的促销活动的交集
var itemLogoMarkIntersect = new Array();
var count = 0;
if(itemLogoMarkArrays.length > 1){
for(var i in minLengthArray){
var counter = 0;
var logoMark = minLengthArray[i];
for(var j in itemLogoMarkArrays){
for(var k in itemLogoMarkArrays[j]){
if(logoMark == itemLogoMarkArrays[j][k]){
counter++;
break;
}
}
}
if(counter == itemLogoMarkArrays.length){
itemLogoMarkIntersect[count] = minLengthArray[i];
count++;
}
}
}else if(itemLogoMarkArrays.length == 1){
itemLogoMarkIntersect = itemLogoMarkArrays[0];
}else{
return "";
}
return itemLogoMarkIntersect;
}