簡體   English   中英

檢查數組中是否存在值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM