js获取多个数组的交集
情景:多条数据,每条数据⾥有⼀个字段tags,需要获取每条数据的tags交集
数据结构
获取每天数据的tags字段的数据很简单,就不多说,直接分析所有数据的tags数组
//数据结构如下,是⼀个⼆维数组,需要获取到每个数组⾥的交集
let arr = [
[1,2,3,4],[3,4,6],[4,5]
]
第⼀步:设置⼀个变量,minArr,表⽰所有数据⾥最⼩长度的数组,后⾯通过这个最⼩长度数组的数据和其他的数据⽐较取交集的数据
arr.forEach(i=>{
minArr = i;
if(i.length<minArr.length){
minArr = i;
}
})
第⼆步:
1、通过对minArr最⼩长度数组的循环遍历数据,然后⾥层遍历所有的arr数据,取到arr的每个数组j,判断每个数组⾥是否有最⼩长度
当前循环的值i;
2、这⾥因为要知道arr每个数组⾥是否包含的minArr当前循环的值,所有设置了⼀个状态的数组state,arr的每⼀个j如果包含这个就
往state⾥⾯push⼀个true,否则push⼀个false
3、最后⼀步:如果state⾥都是true,表⽰每⼀个j都有这个值,所以才存进defaultArr⾥,作为交集数
据
minArr.forEach(i=>{
state = []
//2、这⾥因为要知道arr每个数组⾥是否包含的minArr当前循环的值i,
//所有设置了⼀个状态的数组state=[],
//arr⾥的数组j如果包含i就往state⾥⾯push⼀个true,否则push⼀个false
arr.forEach(j=>{
if(j.includes(i)){
state.push(true)
}
else state.push(false)
})
//3、最后⼀步通过对state状态数组对⽐每⼀个值是不是都是true,
//来判断是否把这个i存进defaultArr交集的数组⾥
const stutas = state.every(i=>
return i===true
})
//只有arr所有的数组都包含这个值才存进defaultArr⾥
js 二维数组stutas&&!defaultArr.includes(i)&&defaultArr.push(i)
})
最后得到交集的数组defaultArr
log图如下
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论