【发布时间】:2019-09-03 17:30:46
【问题描述】:
我正在尝试使用此代码获取恰好位于 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>
【问题讨论】:
-
较新版本的 javascript 提供
Array.prototype.includes,因此如果您有一个数组并想知道它是否有值,theArray.includes(value)将返回 true 或 false。如果您过滤第一个数组,并仅返回其他数组中包含的元素,则相当简单。即使没有includes()方法,使用 indexOf 也可以做同样的事情
标签: javascript jquery arrays ecmascript-6