Пусть теперь мы хотим в цикле создать какой-нибудь многомерный массив с числами.
Например, вот такой двухмерный массив:
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
Решим поставленную задачу, применив два вложенных цикла. Внешний цикл будет создавать подмассивы, а внутренний - заполнять эти подмассивы числами:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = []; // создаем подмассив
for (let j = 0; j < 3; j++) {
arr[i][j] = j + 1; // заполняем подмассив числами
}
}
console.log(arr);
Вместо обращения arr[i][j]
можно использовать
метод push
:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i].push(j + 1);
}
}
console.log(arr);
Сформируйте с помощью двух вложенных циклов следующий массив:
[[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]
Сформируйте с помощью двух вложенных циклов следующий массив:
[['x', 'x', 'x', 'x'], ['x', 'x', 'x', 'x'], ['x', 'x', 'x', 'x']]
Сформируйте с помощью трех вложенных циклов следующий массив:
[
[
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
],
[
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
],
[
[1, 2, 3, 4, 5],
[1, 2, 3, 4, 5],
],
]
Потенциальная проблема
Давайте рассмотрим код, полученный нами выше:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = []; // обратите внимание на эту строчку
for (let j = 0; j < 3; j++) {
arr[i][j] = j + 1;
}
}
console.log(arr);
В этом коде важное место занимает строчка
arr[i] = []
. Эта строчка предназначена
для создания подмассива. Мы не можем опустить
эту строчку, так как тогда во внутреннем
цикле обращение arr[i][j]
выдаст ошибку.
Почему: потому что arr[i]
не будет
являться массивом (а будет undefined
),
а мы будем обращаться к нему, как к массиву,
пытаясь добавить в этот подмассив элемент,
вот так: arr[i][j]
.
Такая же ошибка будет, если вместо arr[i][j]
добавлять элемент через arr[i].push(j)
.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
for (let j = 1; j <= 5; j++) {
arr[i].push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = '';
for (let j = 1; j <= 5; j++) {
arr[i].push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i];
for (let j = 1; j <= 5; j++) {
arr[i].push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[j] = [];
for (let j = 1; j <= 5; j++) {
arr[i].push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr;
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j <= 5; j++) {
arr[i][j] = j + 1;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] == [];
for (let j = 1; j <= 5; j++) {
arr[i].push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr = [];
for (let j = 1; j <= 5; j++) {
arr[i].push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = '';
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j <= 5; j++) {
arr[i][j] = j;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 1; j <= 5; j++) {
arr.push(j);
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j <= 5; j++) {
arr[j][i] = j;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать двухмерный массив:
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j <= 5; j++) {
arr[i][j] = j;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Заполнение числами по порядку
В предыдущих примерах все числа в подмассивах были одинаковыми. Давайте теперь сделаем так, чтобы числа возрастали, вот так:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого нужно сделать специальную переменную-счетчик,
которая будет увеличивать свое значение на
1
при каждой итерации внутреннего
цикла. Значение этого счетчика мы и будем
записывать в массив, вот так:
let arr = [];
let k = 1; // счетчик
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k; // записываем счетчик
k++; // увеличиваем счетчик
}
}
console.log(arr);
Можно уменьшить код, занеся определение счетчика
в первый цикл, а k++
- во второй:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++, k++) {
arr[i][j] = k;
}
}
console.log(arr);
Можно также сделать увеличение счетчика после присваивания:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k++;
}
}
console.log(arr);
Обратите внимание на то, что в данном случае
должно быть обязательно k++
, а не
++k
, так как второй вариант сначала
выполнит увеличение счетчика, а уже потом
запись в массив (то есть в результате массив
начнется с двойки, а не с единицы, вот так:
[[2, 3, 4], [5, 6, 7], [8, 9, 10]])
Сформируйте с помощью двух вложенных циклов следующий массив:
[[1, 2], [3, 4], [5, 6], [7, 8]]
Сформируйте с помощью двух вложенных циклов следующий массив:
[[2, 4, 6], [8, 10, 12], [14, 16, 18], [20, 22, 24]]
Сформируйте с помощью трех вложенных циклов следующий трехмерный массив:
[[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k;
k++;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
let k = 1;
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
let k = 1;
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k;
k--;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
let k;
for (let i = 0; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k;
k++;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0, k++; j < 3; j++) {
arr[i][j] = k;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++; k++) {
arr[i][j] = k;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = ++k;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
let k = 1;
for (let i = 0; i < 3; i++) {
arr[k] = [];
for (let j = 0; j < 3; j++) {
arr[i][j] = k;
k++;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.
Автор следующего кода хотел сделать вот такой массив:
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Для этого был написан следующий код:
let arr = [];
for (let i = 0, k = 1; i < 3; i++) {
arr[i] = [];
for (let j = 0; j < 3; k++) {
arr[i][j] = k;
}
}
console.log(arr);
Написанный код, однако, не делает задуманного. Найдите и исправьте ошибку автора.