Javascript 检查数组中是否存在值

Javascript 检查数组中是否存在值,javascript,jquery,Javascript,Jquery,我想检查Array1中的值是否存在于Array2中。如果存在,则将该值的索引作为值添加到新数组中 我下面的解决方案几乎做到了这一点,但它没有提醒我每一个相同的数字,重复。例如,数组1中的值4355是该值的3,但它只提醒我1次。我想每次都提醒我 var array1 = []; array1.push(3545); array1.push(4355); array1.push(5435); array1.push(3457); array1.push(4355); array1.pus

我想检查Array1中的值是否存在于Array2中。如果存在,则将该值的索引作为值添加到新数组中

我下面的解决方案几乎做到了这一点,但它没有提醒我每一个相同的数字,重复。例如,数组1中的值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");
    }
}
var数组1=[];
阵列1.推送(3545);
阵列1.推送(4355);
阵列1.推送(5435);
阵列1.推送(3457);
阵列1.推送(4355);
阵列1.推送(4355);
var array2=[];
阵列2.推送(1022);
阵列2.推送(4355);
阵列2.推送(2333);
阵列2.推送(5656);
阵列2.推送(1234);
阵列2.推送(5555);
阵列2.推送(7777);
阵列2.推送(3455);

对于(var i=0;i,可以尝试在数组中循环,每次发现匹配项时都会发出警报

alert(searchValue + " found with index(" + $.inArray(searchValue, array2) + ") in array");

(很抱歉,我不能将此作为评论,我还没有50%的声誉。

我不太清楚您想要什么……希望它能帮助您

var数组1=[];
阵列1.推送(3545);
阵列1.推送(4355);
阵列1.推送(5435);
阵列1.推送(3457);
阵列1.推送(4355);
阵列1.推送(4355);
var array2=[];
阵列2.推送(1022);
阵列2.推送(4355);
阵列2.推送(2333);
阵列2.推送(5656);
阵列2.推送(1234);
阵列2.推送(5555);
阵列2.推送(7777);
阵列2.推送(3455);
var array3={};
对于(变量i=0;i 0){
如果(!array3[array1[i]])
阵列3[array1[i]=[]
array3[array1[i].push({index1:i,index2:index});
}
}
write(JSON.stringify(array3,未定义,2));

console.log(array3);
使用常规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");
  }
}
要查找数组中特定值的所有索引,可以使用
jQuery.each()


现在,
索引
是一个数组,其中包含找到值的索引,如果没有匹配项,则为空。

类似的内容如何?请参阅:

基本上,这会循环通过
arr2
将这些值中的每一个值与
arr
中的值进行匹配。
arr2
中的每一个值都成为一个新对象的键,称为
occurrences
,并且有一个
arr
索引数组,其中的值与
arr2
中的值相匹配

如您所见,
arr
中出现的
arr2
中的唯一值是4355,它出现在1、4和5的索引处。由于
arr2
中的其他值都与
arr
中的值不匹配,因此这些值的索引数组只是空的


显然,您可以稍微美化代码并根据需要进行调整。

$。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');
}

从您的问题描述中,听起来像是在向后搜索。您对
checkIfExists
的调用应该是
checkIfExist(array1[1],array2);
您只收到一次通知,因为4355在数组2中只存在一次。是的,这是正确的,谢谢。但它并没有解决我的索引问题,它为每个相同的值提供相同的索引,但它们有不同的索引。看起来
array2
应该是您的“参考”数组-查找索引的查找表xes from。由于每个数字在
array2
中只出现一次,因此对于
array1
中的每个项目实例,都会返回相同的索引。如果要以另一种方式搜索,并且要在
array1
中从
array2
中查找数字的每个实例,则需要修改
checkIfExist()
函数返回一个索引数组。非常简洁易懂。使用
$each()
绝对是一个好方法。
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":[]}
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');
}