公共项查找之数组

概念 :

数据检索的一个分支:从多组数据结构中,找到公共项的方式。

一、公共子项查找

    --两组与多组

        两组思路:我们是不是可以把第一个数组的每一项对应的在后一个数组中进行遍历查找,如果找到匹配的对应的项,就把他存储起来,这样就可以得到想要的公共子项了,这很明显是一个双循环的嵌套操作。

以下先去重,再比对。

公共项查找之数组_第1张图片

    多组思路:先把这个大数组合并成一个数组(每个数组都去重),循环这个新数组,新建一个json,这个json一上来是没有属性1的,所以为了能够走进if判断语句,需要取反,然后将json的第一项设置成一个数组:新数组的第一项

然后第二次循环进来了,如果是1的话,就走到了else,这个时候再将json的第一个数组中push进去这个1,所以在最终,json[1] 就是[1,1,1],这个时候就很明显了,json的每一项,哪一项的长度等于原数组的长度,那么这一项就是数组中每一项都共有的。

公共项查找之数组_第2张图片

letarr=[[1,1,2,45,3],[2,1,4,5,45,6],[7,8,45,2]];

functionpublic(arr) {

varwholeArr=[];

varjson={};

for(vari=0;i

wholeArr=wholeArr.concat(unqiue(arr[i]))

};

for(vari=0;i

if(!json[wholeArr[i]]){

json[wholeArr[i]]=[wholeArr[i]]

}else{

json[wholeArr[i]].push(wholeArr[i])

}

}

}

console.log(public(arr))

functionunqiue(arr){

varjson={}

varresult=[]

for(vari=0;i

if(!json[arr[i]]){

json[arr[i]]=1;

result.push(arr[i])

}

}

returnresult

}

你可能感兴趣的:(公共项查找之数组)