Привет, народ! У меня возник вопрос по JavaScript. Я пытаюсь создать двумерный массив, используя циклы. Вот что мне нужно сделать:
Для каждого числа от 0 до 255 включительно я хочу сохранять по 4 числа в каждую строку массива. Потом переходить к следующему столбцу и снова заполнять его четырьмя числами, и так далее.
Я уже сделал это на C, но не могу разобраться, как реализовать аналог в JavaScript. Вот пример кода на JS, который я пытаюсь написать:
let matrix = [];
let row = [];
let count = 0;
for (let i = 0; i < 256; i++) {
row.push(i);
count++;
if (count === 4) {
matrix.push(row);
row = [];
count = 0;
}
}
Кто-нибудь подскажет, как можно упростить или улучшить этот подход? Спасибо за помощь!
Твой подход уже неплох, но можно сделать код чуть короче и эффективнее. Вот как я бы это оптимизировал:
let matrix = [];
for (let i = 0; i < 256; i += 4) {
matrix.push([i, i+1, i+2, i+3]);
}
Тут мы сразу создаем подмассивы по 4 элемента, используя шаг цикла 4. Это избавляет от необходимости считать элементы и проверять условие. Код становится чище и работает быстрее. Плюс, так мы точно не забудем добавить последний неполный ряд, если такой будет.
А что если попробовать метод slice()? Типа так:
let matrix = ;
for (let i = 0; i < 256; i += 4) {
matrix.push(Array.from({length: 4}, (_, j) => i + j));
}
Тут мы создаем подмассивы по 4 элемента сразу, без лишних переменных. Выглядит покороче и поизящнее, имхо. Как думаешь, подойдет для твоей задачи?
ого, интересная задачка! я когда-то тоже столкнулся с подобным. Могу подсказать, как немного упростить твой код. попробуй использовать метод Array.from() - он позволяет создать массив нужной длины и заполнить его значениями. вот примерно так:
let matrix = Array.from({length: 64}, (, i) =>
Array.from({length: 4}, (, j) => i * 4 + j)
);
эта запись создаст 64 подмассива по 4 элемента в каждом, что как раз даст тебе 256 чисел. метод компактный и довольно шустрый. надеюсь, это поможет! удачи с кодом!