kraso4niy
@kraso4niy
fullstack

Javascript array баг или я туплю?

function getArray(size) {
var ar = [];
		for(var i = 0 ; i < size;i++)
		{
			var inGrid = new Array(size);
			for(var n = 0 ; n < size; n++) {
				inGrid.push("grid_" + n);
			}
			ar.push(inGrid);
		}
		return ar;
}
var result = getArray(12);
alert(result[0].length); //24

Внутри result[0] 12 элементов, а length показывает 24.
Это верное поведение или я чего то не знаю.
Подскажите пожалуйста.
  • Вопрос задан
  • 2251 просмотр
Решения вопроса 1
romanzhak
@romanzhak
Mathematician
Вообще можно посмотреть, что хранится в этом в массиве:

console.log( result[0] ); 
// [undefined × 12, "grid_0", "grid_1", "grid_2", "grid_3", "grid_4", "grid_5", "grid_6", "grid_7", "grid_8", "grid_9", "grid_10", "grid_11"]

Хотя здесь очевидно - вы сначала заполняете массив двенадцатью undefined-элементами, а потом еще добавляете в конец массива 12. Результат = 24.


/* Редкий синтаксис: аргумент new Array - одно число.
При этом создается массив заданной длины, 
все значения в котором undefined */
var array = new Array(10)


Источник
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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