我想检查Array2中是否存在Array1中的值。如果存在,则将新值中的该值的索引添加为值。
下面我的解决方案几乎就是这样做但是它给我提醒每个相同的数字,重复。例如,array1中的值为4355,它是该值的3,但它只提醒我一次。我想每次都提醒我。
var array1 = [];
array1.push(3545);
array1.push(4355);
array1.push(5435);
array1.push(3457);
array1.push(4355);
array1.push(4355);
var array2 = [];
array2.push(1022);
array2.push(4355);
array2.push(2333);
array2.push(5656);
array2.push(1234);
array2.push(5555);
array2.push(7777);
array2.push(3455);
for(var i=0; i<array2.length; i++){
checkIfExist(array2[i], array1);
}
function checkIfExist(searchValue, searchArray){
if ($.inArray(searchValue, searchArray) < 0) {
alert(searchValue + " not found");
}
else {
alert(searchValue + " found with index(" + $.inArray(searchValue, array2) + ") in array");
}
}
答案 0 :(得分:2)
要查找 all 数组中特定值的索引,可以使用jQuery.each()
:
var indices = [];
$.each(searchArray, function(index, value) {
if (value == searchValue) {
indices.push(index);
}
});
现在,indices
是一个数组,其中包含找到值的索引,如果没有匹配则为空。
答案 1 :(得分:1)
我不太清楚你想要什么......希望它会对你有所帮助!
var array1 = [];
array1.push(3545);
array1.push(4355);
array1.push(5435);
array1.push(3457);
array1.push(4355);
array1.push(4355);
var array2 = [];
array2.push(1022);
array2.push(4355);
array2.push(2333);
array2.push(5656);
array2.push(1234);
array2.push(5555);
array2.push(7777);
array2.push(3455);
var array3={};
for(var i=0; i<array1.length; i++){
if( (index= array2.indexOf(array1[i])) > 0 ){
if(!array3[array1[i]])
array3[array1[i]]= []
array3[array1[i]].push({index1:i,index2:index});
}
}
document.write(JSON.stringify(array3, undefined, 2));
console.log(array3);
答案 2 :(得分:0)
也许在每次找到匹配发送警报时尝试循环遍历数组
alert(searchValue + " found with index(" + $.inArray(searchValue, array2) + ") in array");
(对不起,我不能把它作为评论,我还没有50个声誉。
答案 3 :(得分:0)
使用常规的javascript方式从数组中获取索引而不是这些有角度的东西:
array.indexOf( value )
这将返回值的索引,如果找不到则返回-1
。
function checkIfExist(value, array) {
var index = array.indexOf(value);
if (index === -1) {
alert(searchValue + " not found");
} else {
alert(value + " found with index(" + index + ") in array");
}
}
答案 4 :(得分:0)
这样的事情怎么样?请参阅jsfiddle:
var arr = [3545, 4355, 5435, 3457, 4355, 4355],
arr2 = [1022, 4355, 2333, 5656, 1234, 5555, 7777, 3455],
occurences = {};
arr2.forEach(function(el, i, array) {
occurences[el] = $.map(arr, function(element, index) {
return element == el ? index : null;
});
});
console.log(occurences);
$('body').html('Indexes: '+JSON.stringify(occurences));
// ==> Indexes: {"1022":[],"1234":[],"2333":[],"3455":[],"4355":[1,4,5],"5555":[],"5656":[],"7777":[]}
基本上,这会循环显示arr2
以将每个值与arr
中的值相匹配。来自arr2
的每个值都成为一个名为occurences
的新对象的键,并且有一个arr
索引数组,其值与{{1}中的值匹配}}
正如您所看到的,arr2
中arr2
显示的唯一值 4355 ,它出现在 1,4和_的索引处5 即可。由于arr
中的其他值都不匹配arr2
中的值,因此这些值的索引数组只是空的。
显然,您可以对代码进行一些调整,并根据您的需要进行调整。
答案 5 :(得分:0)
$.inArray
仅为从0
其他-1
开始的数组中的第一个匹配项提供索引。
function checkIfExist(searchValue, searchArray){
var index = [];//trace all matching index
for(var i = 0, l = searchArray.length; l > i; i ++) {
if(searchValue === searchArray[i]) {//matched value
index.push(i);//add index to array
}
}
return index;
}
var arr = checkIfExist(0, [1,0,3,9,0]);
if(arr.length) {//match found
alert('Matched at index: ' + arr.join(','))
} else {
alert('No match found');
}