Есть ли более эффективные способы создания вложенных объектов, чем подход с вложенным for
?
Я пытаюсь удержать 25 случайных чисел (1 - 71), 5 строк x 5колонка.Я буду перебирать каждый элемент, чтобы проверить, выбрала ли функция ballPicker () (еще не реализованная) число, имеющееся у объекта.Поэтому мне нужно сохранить информацию, если номер был найден.Я мог бы сделать это с массивом 5 x 5, но итерация этого массива будет не такой эффективной, как у объектов.
У меня есть массив, начиная с 1 до 71 (включительно, шаг равен 1).Я перемешиваю массив в функции createRandomNumberArray ().Таким образом, значения массива shuffledNumbers не являются последовательными
let shuffledNumbers = Array.from({length: 71}, (v, i) => i + 1);
function createRandomNumberArray() { //Fisher - Yates shuffle algorithm
let randomPosition;
let temp;
for (let i = shuffledNumbers.length - 1; i > 0; i--) {
randomPosition = Math.floor(Math.random() * (i + 1));
temp = shuffledNumbers[i];
shuffledNumbers[i] = shuffledNumbers[randomPosition];
shuffledNumbers[randomPosition] = temp;
}
}
В функции createBoards () я создаю объект (доску), который содержит 5 объектов (ряд) с их индексами в качестве имени свойства.И в строке снова есть 5 объектов (ячейка) с индексами в качестве имени свойства.В ячейке есть только один объект, который получает имя своего свойства из slicedArray (slicedArray - это срез из 5 элементов из shuffledNumbers, который содержит недублированные случайные числа (диапазон от 1 до 71 включительно)), и его значение всегда равно false.
function createBoards() {
let board = {};
for (let i = 0; i < 5; i++) {
let row = {};
let slicedArray = shuffledNumbers.slice((i * 5), ((i + 1) * 5));
for (let j = 0; j < 5; j++) {
let cell = {};
cell[slicedArray[j]] = false;
row[j] = cell;
}
board[i] = row;
}
return board;
}
Я хочу сохранить структуру следующим образом:
В объекте Board будет ровно 5 строк, а в 1 строке ровно 5 элементов.И в будущем мне нужно будет повторять эти элементы, чтобы найти случайное значение, которое я назначил ранее.Я думал, что быстрее использовать объекты, чем массивы.Я надеюсь, что я прав.