[英]Check if value exist in array
我想檢查Array2中是否存在Array1中的值。 如果存在,則在新數組中將該值的索引添加為一個值。
我下面的解決方案幾乎可以做到這一點,但它會提醒我每個相同的數字,重復。 例如,將array1中的4355值,即該值的3,但僅提醒我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);
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");
}
}
要查找數組中特定值的所有索引,可以使用jQuery.each()
:
var indices = [];
$.each(searchArray, function(index, value) {
if (value == searchValue) {
indices.push(index);
}
});
現在, indices
是一個數組,其中包含在其上找到值的索引;如果沒有匹配項,則為空。
我不確定您想了解什么,希望它能對您有所幫助!
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);
也許嘗試遍歷數組,每次找到匹配項發出警報
alert(searchValue + " found with index(" + $.inArray(searchValue, array2) + ") in array");
(對不起,我無法對此發表評論,我還沒有50名聲望。
使用常規的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");
}
}
那這樣的東西呢? 參見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
其中的值相匹配的是在的那些arr2
。
如您所見, arr2
中出現在arr
的唯一值是4355 ,它出現在索引1、4和5上 。 由於來自arr2
的其他值均與arr
值不匹配,因此這些值的索引數組只是空的。
顯然,您可以對代碼進行一些修飾,並根據需要進行調整。
$.inArray
僅給出從0
else -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');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.