2014-11-11 2 views
0

У меня есть работа по синтаксическому анализу, содержащая простой query.each для одного класса. Этот класс имеет 2 поля массивов, заполненных объектами.ID. Внутри этого запроса для каждого отдельного объекта мне нужно проверить, содержатся ли объекты.ID первого массива во втором массиве. основном в простом цикле:Найти, если Array содержит пользователя

var j = 0; 
    for (var j = 0; j < firstArray.length; j++) { 
     if(firstArray[j] "isContainedIn" secondArray){ 
     // my custom code 
     } 
    } 

Что я не могу понять, это функция использовать, если exist..Does Javascript имеет такую ​​функцию, что и мне нужно сделать вложенный цикл, чтобы достичь своей цели ?

EDIT: я работал его с помощью IndexOf, но решение, предложенное Shqiptar не работает, поэтому здесь тот, который на самом деле работает:

первое имя Array = usersEligibleToVote второе имя массива = usersThatVoted

for (var j = 0; j < usersEligibleToVote.length; j++) { 
     if(usersThatVoted.indexOf(usersEligibleToVote[j]) === -1){ 
      console.log("user.id "+usersEligibleToVote[j]+" needs to vote"); 
     } else { 
      console.log("user.id "+usersEligibleToVote[j]+" has voted"); 
     } 
} 
+0

Вложенный цикл, если указатели указывают на тот же объект ... – brso05

+0

Вы можете использовать IndexOf, если они не являются точно такой же объект не значение, но указатели на один и тот же объект – brso05

+0

Дубликат http://stackoverflow.com/questions/237104/array-containsobj-in-javascript –

ответ

1
var j = 0; 
    for (var j = 0; j < firstArray.length; j++) { 
     if(firstArray[j].contains(secondArray)) 
     { 
     // your custom code here 
     } 
    } 

А потом для проверки, если объект является то же самое:

var j = 0; 
    for (var j = 0; j < firstArray.length; j++) { 
     if(firstArray[j].indexOf(secondArray) != -1) 
     { 
     // your custom code here 
     } 
    } 
+1

Внимание: это должен быть тот же объект, а не объект с одинаковыми значениями. – brso05

+0

Я думаю, что вы хотите 'secondArray.contains (firstArray [j])' –

+1

'firstArray [j] .indexOf (secondArray)' вы хотите сделать '! = -1' здесь. Возвращаемое значение 0 (ложь) означает, что оно находится в массиве. И у вас есть все условия назад. –

0

я бы обработать его с помощью простой JQuery и JavaScript для цикла, как так:

var arr1; 
var arr2; 
var i; 
for(i = 0; i < arr1.length; i++) { 
    if ($.inArray(arr1[i], arr2) { 
     break; //do things here or what not 
     } 
} 
+0

Вы будете голосовать за предложение jQuery «за такую ​​простую вещь» хе-хе. Предполагая, что в настоящее время он использует его, - это справедливо. –

+0

Нет пустых голосов :(Это технически только две строки: P Мне гораздо быстрее использовать jQuery inArray. Я использую его для сравнения нескольких продуктов при просмотре списков продуктов и рекламных акций, чтобы захватить их. – dhershman

+0

Да, единственное, что некоторые пользователи могут захотеть связать весь jQuery только для использования этого помощника, который является глупым, поскольку это не является целью этого плагина. Для логических операций javascript и т. д. -> checkout lodash или underscore. –

Смежные вопросы