inscamp
@inscamp

В чём проблема с вызовом функции в теле двойного цикла?

Имеется некая функция, генерирующая случайное число (1, 2, 3 или 4).
function randomStatus() {
	var rand = Math.random() * 4;
	var status = Math.floor(rand);
	return status + 1;
};

Кроме того есть двумерный массив (размерности n×m), в каждый элемент которого я записываю одно из четырёх случайных чисел, каждый раз вызывая вышеуказанную функцию.
for (var j = 0; j < m; j++) {
	for (var i = 0; i < n; i++) {
		statusMatrix[i, j] = randomStatus();
	};
};

На деле полученный массив statusMatrix заполняется примерно так:
2 2 2 2 
1 1 1 1
2 2 2 2
4 4 4 4

То есть от строчки к строчке генерирующая функция вызывается и даёт различные значения. А для каждой строчки в отдельности функция будто бы вызывается один раз.

Убедиться в этом можно в песочнице.

Мне же необходимы разнличные значения элементов массива как внутри каждой строчки, таки и внутри каждого столбца.
  • Вопрос задан
  • 2256 просмотров
Решения вопроса 2
jusio
@jusio
Senior Software Engineer at Restlet
У вас неправильный доступ к элементам массива. Вместо statusMatrix[i, j]должно быть statusMatrix[i][j]

Причём эта ошибка у вас везде в коде=)
Ответ написан
mlnkv
@mlnkv
JavaScript Developer
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
standy
@standy
Запись i, j в данном контексте это оператор запятая
В js нет двумерных массивов из коробки.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы