首页 > 解决方案 > 无法正确获取 4 个数组之间的公共元素

问题描述

我正在尝试使用此代码获取恰好在 4 个数组中的每个数组中的常见元素。

但它看起来像是在计算两个或三个数组上常见的任何元素。但我需要获取在所有四个数组中重复的公共元素。我怎样才能解决这个问题?

let newArr = [];

function common(arr1, arr2, arr3, arr4) {

  newArr = arr1.filter(function(v) {
    return arr2.indexOf(v) >= 0;
  })
  newArr.concat(arr2.filter(function(v) {
    return newArr.indexOf(v) >= 0;
  }));
  newArr.concat(arr3.filter(function(v) {
    return newArr.indexOf(v) >= 0;
  }));
  newArr.concat(arr4.filter(function(v) {
    return newArr.indexOf(v) >= 0;
  }));
}

common([1, 2, 6, 5, 9], [1, 2, 3, 6, 5, 9], [6, 5, 4, 5], [8, 2, 1, 6, 4]);

$('div').text(newArr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>

标签: javascriptjqueryarraysecmascript-6

解决方案


像这样使用一些filter调用indexOf

let newArr = [];

function common(arr1, arr2, arr3, arr4) {
  newArr = arr1.filter(function(e) {
    return arr2.indexOf(e) > -1 && arr3.indexOf(e) > -1 && arr4.indexOf(e) > -1;
  });
}

common([1, 2, 6, 5, 9], [1, 2, 3, 6, 5, 9], [6, 5, 4, 5], [8, 2, 1, 6, 4]);

$('div').text(newArr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>


推荐阅读