2013-03-18 1 views
0

Я видел много сообщений о поиске вложенных массивов в javascript, но ни один из них не знает, существует ли элемент в массиве.проверить, существует ли значение в многоуровневом массиве и возвращать значение boolean

это может показаться странным, так вот некоторые примеры:

У меня есть 2 массивы oldArray и newArray

структурированы следующим образом:

array(
     [0]=>array([name]:"name" 
      [location]:"location") 
     [1]=>array([name]:"name2" 
      [location]:"location2") 
) 

оба массива структурированы таким образом.

Мне нужно знать, какие имена существуют в старом массиве, а не в новом, и наоборот.

вот что я пробовал:

var name= oldArray[key]['name']; 

    for (var key in oldArray) { 
     for(var i= 0, len = newArray.length; i < len; i++){ 
       if(newArray[i]['name'] == name){ 
          //push to array 
       } 
       else{ 
         //push to different array 
       } 
     } 
} 

таким образом у меня будет массив, который содержит все имена, которые существуют в обоих массивах и массив, который содержит только имена, которые существуют в oldArray ..

это не работает, потому что это сравнение 1 к 1. первый массив правильный, но массив, который должен содержать только имена, существующие в старом массиве, неверен.

ответ

0

Используйте логическое значение, чтобы отслеживать, есть ли матч в новом массиве. Затем, после того, как вы закончите цикл for for newArray, проверьте boolean, чтобы узнать, не найдено совпадений, а затем нажмите на другой массив.

var name= oldArray[key]['name']; 

for (var key in oldArray) 
{ 
    var foundMatch=false 
    for(var i= 0, len = newArray.length; i < len; i++) 
    { 
     if(newArray[i]['name'] == name) 
     { 
      //push to array 
      foundMatch=true; 
        break; 
     } 
    } 
    if(foundMatch==false) 
    //push to different array 

} 
0

Вы инициализировали массив для старых значений?

Вы получаете исключение?

Вы отлаживали его с помощью Chrome?

редактировать:

Я думаю, если вы:

для всех старых значений нажмите, если существует и переспрашивать и толкать, это будет толкать в бесконечном цикле.

пытаются добавить разрыв

var name= oldArray[key]['name']; 

     for (var key in oldArray) { 
      for(var i= 0, len = newArray.length; i < len; i++){ 
        if(newArray[i]['name'] == name){ 
           //push to array 

        break; 
        } 
        else{ 
         if(i==newArray.length-1) 
          //push to different array 


        } 
      } 
    } 
+0

Я не возникли проблемы с массивом я просто хочу, чтобы иметь возможность проверить, если значение существует в многомерном массиве, и если это нажать на arrray, если не нажать на другой массив. – arrowill12

+0

попробуйте добавить разрыв, если существует, и только нажать на второй массив, если вы находитесь в конце newArray –

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