js 获取多个数组的交集

let arr = [
  [1, 2, 3, 4],
  [3, 4, 6],
  [4, 5],
];
// 1、设置一个变量minArr,表示所有数据里最小长度的数组
// 后面通过这个最小长度数组的数据和其他的数据比较取交集的数据
let minArr = [],
  defaultArr = [];
arr.forEach(i => {
  minArr = i;
  if (i.length < minArr.length) {
    minArr = i;
  }
});
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);
  });
  console.log(state);
  // 3、最后一步通过对state状态数组对比每一个值是不是都是true
  // 来判断是否把这个i存进defaultArr交集的数组里
  const status = state.every(i => {
    return i === true;
  });
  // 只有arr所有的数组都包含这个值才存进defaultArr里
  status && !defaultArr.includes(i) && defaultArr.push(i);
});

console.log(defaultArr);

 参考链接:https://blog.csdn.net/weixin_36706903/article/details/108534778

原文地址:https://www.cnblogs.com/ziyoublog/p/13821858.html