Эта версия решения позволяет передавать неопределенное количество массивов.До тех пор, пока он не найдет массив, в котором нет номера, он будет включать число в результаты.
function common() {
var firstArray = arguments[0];
var otherArrays = Array.prototype.slice.call(arguments, 1);
if (!otherArrays) return firstArray;
return firstArray.filter(function(element){
return otherArrays.filter(function(otherArray){
return otherArray.indexOf(element) < 0;
}).length == 0;
});
}
var result = common([1, 2, 6, 5, 9], [1, 2, 3, 6, 5, 9], [6, 5, 4, 5], [8, 2, 1, 6, 4]);
$('div').text(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>
Если вы знаете, что поддерживает браузер для Array.prototype.every
, эта логика может быть несколько уменьшена.
function common() {
var firstArray = arguments[0];
var otherArrays = Array.prototype.slice.call(arguments, 1);
if (!otherArrays) return firstArray;
return firstArray.filter(function(element){
return otherArrays.every(function(otherArray){
return otherArray.indexOf(element) > -1;
});
});
}
var result = common([1, 2, 6, 5, 9], [1, 2, 3, 6, 5, 9], [6, 5, 4, 5], [8, 2, 1, 6, 4]);
$('div').text(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div></div>