是否有比嵌套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个对象(行),它们的索引作为属性名。并且row具有5个对象(单元格),它们的索引再次作为属性名称。单元格只有一个从slicedArray获取属性名称的对象(slicedArray是shuffledNumbers的5项切片,其中包含不重复的随机数(范围从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个项目。将来,我需要迭代这些项以找到我之前分配的随机值。我认为使用对象比使用数组要快。我希望我是正确的。