我有五个数组,它们可能包含相同的值。
var arr1 = ['1','2','3','4'];
var arr2 = ['1','3']
var arr3 = ['1','2','3']
var arr4 = ['1','2','3','4','5'];
var arr5 = ['1','3','4']
如何使用jQuery查找所有数组中都存在的数字?
数字1
和3
都出现在所有数组中吗?
我有五个数组,它们可能包含相同的值。
var arr1 = ['1','2','3','4'];
var arr2 = ['1','3']
var arr3 = ['1','2','3']
var arr4 = ['1','2','3','4','5'];
var arr5 = ['1','3','4']
如何使用jQuery查找所有数组中都存在的数字?
数字1
和3
都出现在所有数组中吗?
看看这个
JsFiddle http://jsfiddle.net/nWjcp/87/
var arr1 = ['1','2','3','4'];
var arr2 = ['1','3']
var arr3 = ['1','2','3']
var arr4 = ['1','2','3','4','5'];
var arr5 = ['1','3','4']
var arrays = [
arr1,arr2,arr3,arr4,arr5
];
var result = arrays.shift().filter(function(v) { // Filtering
return arrays.every(function(a) { // Seek duplicate
return a.indexOf(v) !== -1;
});
});
alert( JSON.stringify(result,null,4) ); // ['1','3']
首先,让我们创建一个更易于处理的数据集:
var arrays = [
['1', '2', '3', '4'],
['1', '3'],
['1', '2', '3'],
['1', '2', '3', '4', '5'],
['1', '3', '4']
];
接下来,我们需要获取所有唯一的元素:
var elements = [].concat.apply([], arrays).filter(function(value, index, self) {
return self.indexOf(value) === index;
}); //["1", "2", "3", "4", "5"]
最后,将这个集合与我们的所有数组进行比对,只保留出现在所有数组中的元素:
var out = elements.filter(function(item) {
return arrays.reduce(function(present, array) {
present = present && (array.indexOf(item) !== -1);
return present;
}, true);
}); //["1", "3"]
var arr1 = ['1','2','3','4'];
var arr2 = ['1','3']
var arr3 = ['1','2','3']
var arr4 = ['1','2','3','4','5'];
var arr5 = ['1','3','4']
var arrs = [arr1,arr2,arr3,arr4,arr5];
var obj={};
$.each(arrs,function (i,arr){
$.each(arr,function (j,n){
obj[n]=(+obj[n] || 0) + 1;
});
});
for (item in obj)
{
if(obj.hasOwnProperty(item ) && obj[item]==arrs.length) console.log(item) //1,3
}
var arr1 = ['1','2','3','4'];
var arr2 = ['1','3', '8'];
var arr3 = ['1','2','3'];
var arr4 = ['1','2','3','4','5'];
var arr5 = ['1','3','4'];
var arrayOfArray = [arr1, arr2, arr3, arr4, arr5];
var arrayWithMin = null;
var outputArray = [];
$.each(arrayOfArray, function(index, arrayItem) {
arrayWithMin = (arrayWithMin == null) ? arrayItem : (arrayWithMin.length > arrayItem.length ? arrayItem : arrayWithMin);
});
$.each(arrayWithMin, function(i, searchItem) {
if($.inArray(searchItem, arr1) > -1
&& $.inArray(searchItem, arr2) > -1
&& $.inArray(searchItem, arr3) > -1
&& $.inArray(searchItem, arr4) > -1
&& $.inArray(searchItem, arr5) > -1) {
outputArray.push(searchItem);
}
});
document.write(outputArray.join(', '));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>