2015-10-04 2 views
0

У меня есть 2 массивыДля цикла с 2 синтаксического анализа массивов

var a = [ 
    "4", 
    "@", 
    "/\\", 
    "/-\\", 
    "^", 
    "∂", 
    "λ", 
    "α", 
    "(!", 
    "Z", 
    "α" 
]; 
var r = [ 
    "1²", 
    "2", 
    "?", 
    "P\\", 
    "[\"/_", 
    "l\"/_", 
    "|-", 
    "|2", 
    "|?", 
    "®", 
    "12", 
    "/2", 
    "I2", 
    "|^", 
    "|~", 
    "(r)", 
    "|`", 
    "l2", 
    "Я", 
    "ʁ", 
    "я" 
]; 

мне нужно Парс в 1 для постановки оба массива

Вот что у меня есть:

for (var index_a=0, index_r=0; index_a < a.length, index_r < r.length ; ++index_a, ++index_r) { 
    new_a = a[index_a]; 
    console.log(new_a); 
    new_r = r[index_r]; 
    console.log(new_r); 
}; 

Выход:

the element from A array: 4 
the element from R array: 1² 
the element from A array: @ 
the element from R array: 2 
the element from A array: /\ 
the element from R array: ? 
the element from A array: /-\ 
the element from R array: P\ 
the element from A array:^
the element from R array: ["/_ 
the element from A array: ∂ 
the element from R array: l"/_ 
the element from A array: λ 
the element from R array: |- 
the element from A array: α 
the element from R array: |2 
the element from A array: (! 
the element from R array: |? 
the element from A array: Z 
the element from R array: ® 
the element from A array: α 
the element from R array: 12 
the element from A array: undefined 
the element from R array: /2 
the element from A array: undefined 
the element from R array: I2 
the element from A array: undefined 
the element from R array: |^ 
the element from A array: undefined 
the element from R array: |~ 
the element from A array: undefined 
the element from R array: (r) 
the element from A array: undefined 
the element from R array: |` 
the element from A array: undefined 
the element from R array: l2 
the element from A array: undefined 
the element from R array: Я 
the element from A array: undefined 
the element from R array: ʁ 
the element from A array: undefined 
the element from R array: я 

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

+0

Вам нужен только последний элемент? – baao

+0

непонятно, что вы хотите сделать, когда первый массив заканчивается - перестаньте цикл по второму, или продолжайте только на нем? –

+0

Почему бы не объединить массивы и не перебрать все элементы? – Alex

ответ

0

Я уверен, что может быть 1001 на самом деле очень интересные ответы о том, как это сделать, но, учитывая ваши настройки, которые вы показали выше, самый быстрый способ будет просто окружить:

if(index_a < a.length){ 
    new_a = a[index_a]; 
    console.log(new_a); 
} 

Теперь, если у вас есть 5 массивов, вам нужно это сделать, вам будет громоздить необходимость принудительного использования каждого из них с помощью инструкции. Более интересным способом было бы начать думать в терминах другого метода, который возвращает n-й элемент массива, если он существует, и ничего, если он этого не делает. Таким образом, вы можете игнорировать возвращаемое значение, если оно ничего, но используйте его, если оно существует.

Если все массивы, о которых идет речь, возвращают ничего, тогда все готово.

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

Много опрятных способов сделать это.

0

Проверьте значение, которое вы пытаетесь указать из короткого массива. Если значение undefined принимает значение из последнего элемента в коротком массиве. Оператор?: Может проверить это

Что-то вроде этого: new_a = a [index_a] == 'undefined'? A [a.length-1]: a [index_a];

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