2013-02-28 2 views
0

Я не могу придумать способ циклического преобразования двух массивов одновременно. Этот код предназначен для вывода данных функции в разные div на странице. array1 определяет вход и array2 определяет выход.Множество массивов в структуре контура

Как я могу перебрать двух массивов, так что item1 всегда будет в паре с '#div1', item2 с '#div2' и т.д.

var array1=[item1 , item2, item3, item4]; 
var array2=['#div1', '#div2', '#div3', '#div4']; 

for (var i = 0; i < array1.length; i++) { 

    //code for to populate data goes here 

    item.appendTo($(array2[i])); 
}; 

Могу ли я по крайней мере, правильно обвести свою функцию в цикле?

Спасибо!

+0

Поскольку оба массив имеет одинаковую длину и в правильном порядке, вы можете использовать переменный цикл 'i' для доступа обоих массивов, 'array1 [i]' и 'array2 [i]'. –

+0

Вы имеете в виду это? 'for (var i = 0; i <3; i ++) {' Он выводит все в последний элемент в первом массиве. – user2062244

+0

Нет, вы можете сохранить 'for (var i = 0; i

ответ

0
var array1=[item1 , item2, item3, item4]; 
var array2=['#div1', '#div2', '#div3', '#div4']; 

for (var i = 0; i < array1.length; i++) { 

    //code for to populate data goes here 

    $(array1[i]).appendTo(array2[i]); 

}; 
+0

«item» в этом разделе 'item.appendTo ($ (array2 [i]));' является частью функции, поэтому я пытаюсь добавить 'item' в div в' array2' – user2062244

+0

Вместо того, чтобы использовать appendTo(), тот же эффект будет достигнут с помощью append() следующим образом: $ (array2 [i]). append (array1 [i]); – DanC

+0

Я догадываюсь, что я все еще не понимаю, так как хотел бы вывести 'item' в div, хранящийся в массиве. – user2062244

0

Вы можете просто перебрать два массива сразу. Для обеспечения безопасности просто проверьте, не превышает ли ваша индексная переменная («i») ни одна из двух длин массива.

Вот пример:

var array1=[item1 , item2, item3, item4]; 
var array2=['#div1', '#div2', '#div3', '#div4']; 

var array3 = []; 
for (var i = 0; i < array1.length && i < array2.length; i++) { 
    array3.push({ 
     el1: array1[i], 
     el2: array2[i] 
    }); 
} 

for (var i = 0; i < array3.length; i++) { 
    // array3[i].el1; -- element from array1 
    // array3[i].el2; -- element from array2 
} 

Вы можете сделать это в одном цикле, конечно. Здесь я ушел с двумя просто для ясности (второй - только для ведения журнала).

+0

К сожалению, это должно поддерживать IE8, поэтому 'Array.map' не будет работать. – user2062244

+0

Вы можете не использовать IE8 без проблем. Я обновляю ответ за секунду. – kamituel

+0

Ekhm, я имел в виду «не использовать карту()», конечно;) – kamituel

0

Использование $() создает объект jQuery. Вероятно, вы захотите создать объект jQuery без значений array2. При использовании цикла for переменная i будет увеличиваться, и вы можете использовать ее для доступа к элементам массива. Так как вы хотите, тот же индекс обоих массивов, используя этот цикл должен хорошо работать

var array1=[item1 , item2, item3, item4]; 
var array2=['#div1', '#div2', '#div3', '#div4']; 

for (var i = 0; i < array1.length; i++) { 
    $(array2[i]).append(array1[i]); 
}; 
+0

«item» в этом разделе 'item.appendTo ($ (array2 [i]);' является частью функции, поэтому я пытаясь добавить 'item' в div в' array2' – user2062244

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