Я пытаюсь создать JS, который возьмет существующий массив и добавит к нему число с помощью переменной. Проблема в том, что он не возвращает ожидаемое значение. при element[0][1] += rows
консоль возвращает значение, которого не должно. Например, если rows = 0;
и консоль element[0][1] = 1;
вернет: 2 . Я думаю, это как-то связано с моим вложенным массивом, когда я запускаю простой код, например:
let x = 1;
let g = [1,2,3];
g[0] += x;
console.log(g[0]);
Все работает хорошо, и ожидаемый ответ сохраняется, но я не уверен. Любая помощь будет принята с благодарностью, и я упростил свой код, чтобы помочь!
edit 2: numberOfObjects
- целое число и представляет количество элементов, которым нужна позиция x и y
var slides = [
[
[ [1,1],[3,1] ] //element 0 (start[x,y], end[x,y])
], // slide 0;
[
[ [1,1],[2,1] ], // element 0
[ [3,1],[3,1] ] //element 1
], //slide 1
[
[ [1,1],[2,1] ], // element 0
[ [3,1],[3,2] ], // element 1
[ [1,2],[2,2] ] // element 2
], //slide 2
[
[ [1,1],[1,1] ], // element 0
[ [1,2],[1,3] ], // element 1
[ [1,2],[2,3] ], // element 2
[ [3,2],[3,3] ] // element 3
], //slide 3
[
[ [1,1],[1,2] ], // element 0
[ [2,1],[2,2] ], // element 1
[ [3,1],[3,2] ], // element 2
[ [1,3],[1,3] ], // element 3
[ [2,3],[3,3] ] // element 4
], //slide 4
[
[ [1,1],[1,1] ], // element 0
[ [2,1],[2,1] ], // element 1
[ [3,1],[3,2] ], // element 2
[ [1,2],[2,2] ], // element 3
[ [1,3],[1,3] ], // element 4
[ [2,3],[3,3] ] // element 5
] //slide 5
]
function getRandomInt(max) {
return Math.floor(Math.random() * Math.floor(max));
}
function collectSlides(numberOfObjects){
//const N = numberOfObjects;
var rows = 0;
console.log("At row:"+rows);
while (numberOfObjects > 0){
if (numberOfObjects < 7){
console.log("finished");
numberOfObjects == 0;
}
else{
let x = getRandomInt(6);
let slide = slides[x];
slide.forEach(element => {
//console.log("org:"+element[0][1]);
element[0][1] = rows;
//console.log("aft:"+element[0][1]);
});
rows += (slide[slide.length-1][1][1] - rows);
console.log(slide);
numberOfObjects -= x;
}
}
}
Изменить Дополнительная информация:
Функции вызываются с помощью консоли для упрощения, но обычно вызываются с событием загрузки страницы.
ожидаемые результаты, массив, возвращаемый функцией, дающий мне сгенерированный список элемента (перечисленное выше, похожее на 2 кортежа) с обновленными координатами y.
почему? Я планирую использовать css -grid, чтобы создать страницу, где каждый элемент будет охватывать выбранную строку и столбцы, заданные js. вот изображение того, что будет делать каждый слайд. цель функции collectSlides()
состоит в том, чтобы случайным образом выбрать один из слайдов и добавить его в массив retun с соответствующими координатами y.
редактировать 2: закомментировано const N
, потому что это не актуально
редактировать 3: для повторения результатов я использую Math.seedrandom("3232");
из этот код я сначала вставляю seedrandom.min.js
с тегом сценария в html. Я вызываю функцию в консоли с помощью collectSlides(22)
, и когда первый ответ на выходе будет (5) [Array(2), Array(2), Array(2), Array(2), Array(2)]
под именем element[0]
, вы найдете 0: (2) [1, 1] 1: (2) [1, 2]
. с кодом 0: (2) [1, 1 ] (выделенное жирным шрифтом число) должно быть 0, а не 1 .