Предполагая, что созданный вами массив, цикл выглядит следующим образом:
var i, j, entry, ImgArray;
// Create the array
ImgArray = new Array(4);
for (i=0; i < 4 ; i++) {
ImgArray[i] = new Array(4);
}
// Loop through both dimensions
for (i = 0; i < ImgArray.length; ++i) {
entry = ImgArray[i];
for (j = 0; j < entry.length; ++j) {
// Do something with entry[j]
}
}
Это связано с тем, что в нет двухмерных массивов в JavaScript .(На самом деле, даже массивы на самом деле не являются массивами , но давайте не будем там.) Есть «массивы», и запись массива может быть другим массивом, но одна запись массива может быть длиннее или короче, чемдругие.Таким образом, вы извлекаете этот массив и перебираете его длину, которая может отличаться от других в том же «измерении».
Обратите внимание, что я не использовал for..in
выше. Не используйте for..in
для циклического перемещения по массивам, если вы действительно не знаете, что делаете; подробности здесь .(Если вы делаете действительно знаете, что делаете, и принимаете адекватные меры предосторожности, это нормально, но ваш код, указанный в кавычках, не принимает необходимые меры предосторожности.) for..in
делает не повторениеиндексы массива, он перечисляет имена свойств объекта.
Не по теме # 1 : В JavaScript соглашение (которое вы можете игнорировать) заключается только виспользуйте начальные заглавные буквы (ImgArray
) для функций конструктора.
Не по теме # 2 : вы можете посмотреть на использование литералов массива ([entry, entry, entry]
) вместо new Array(...)
, но этозависит от того, что вы делаете.
Не по теме # 3 : Очень плохая идея полагаться на вставку точек с запятой (как в вашей строке ImgArray[i] = new Array(4)
).Обязательно ставьте точки с запятой там, где они нужны, или вы обнаружите, что не можете должным образом минимизировать свои сценарии и / или что вы будете бороться с нечетными ошибками, которые тратят ваше время.: -)