基本思路:
1.获取长度最短的数组
2.分别针对每组数组构建json(hash)
3.遍历最短的数组,并且匹配其他数组中的数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
function getArrayShare(arr){ var length; var subArr,subLength; var mixArr,mixLength; var i,j,index; var arrObj = [],obj = {}; var spe = ","; var key,str=spe; var _arr=[]; length = arr.length; mixArr = arr[0]; mixLength = mixArr.length; if(!length)return; if(length == 1) return mixArr; for(i=0;i<length;i++){ subLength = arr[i].length; if(mixLength>subLength){ mixLength = subLength; mixArr = arr[i]; index = i; } }; arr.splice(index,1); length = arr.length; for(i=0;i<length;i++){ obj = {}; subArr = arr[i]; subLength = subArr.length; for(j=0;j<subLength;j++){ obj[subArr[j]] = true; } arrObj.push(obj); } for(i=0;i<mixLength;i++){ key = mixArr[i]; for(j=0;j<length;j++){ if(arrObj[j][key]&&str.indexOf(spe+key+spe)==-1){ _arr.push(key); str += key + spe; } }; }; return _arr; } var testArray = [[1,2,3,10],[10,5,1,10,3],[10,3,1]] console.log(getArrayShare(testArray)); |
转载请注明:飞飞的个人网站 » [javascript]多个数组取交集的函数