Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Почему код не работает, ругается на 0, в чем проблема?

Returno Мудрец (11775), открыт 2 недели назад
 let ArrayNumber= [ 
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1],
[-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1]
];

let ArrayFind=[];

for (let i=0; i < ArrayNumber.length; i++){

for (let j=0; j < ArrayNumber[i].length-1; j++){

ArrayFind[i][j] = 10;
}

}

console.log( ArrayFind);
Дополнен 2 недели назад
или двухмерный массив невозможно объевить пустым?
4 ответа
Рукажоп Просветленный (25053) 2 недели назад
"ругается на 0" - просто фееричное описание проблемы.
Может по подробнее?
ReturnoМудрец (11775) 2 недели назад
Uncaught TypeError: Cannot read properties of undefined (reading '0')"
Рукажоп Просветленный (25053) Returno, ты пытаешься задать значение несуществующему массиву внутри массива.
ReturnoМудрец (11775) 2 недели назад
не работает
Рукажоп Просветленный (25053) Returno, как скажешь...
ReturnoМудрец (11775) 1 неделю назад
в фотошопе и я нарисуй иди отсюда кривожопый дядел и отвечай мне больше валенок
Рукажоп Просветленный (25053) Returno, а то что?
Ааабаев АаабМыслитель (8626) 1 неделю назад
он писать-то не умеет на родном языке... "объевить"... а ты ему тут...
Максим Оракул (93827) 2 недели назад
let ArrayFind=[]; - Это пустой одномерный массив массив

Добавляем в массив другой массив ArrayFind[i] = new Array(5);
Теперь у нас двумерный массив, правда в одну строку :)
Добавишь в цикле массивы в этот массив и будет большой массив.

ArrayFind[i][j] а так потом доспут к элементам будешь получать
ReturnoМудрец (11775) 2 недели назад
в с# намного проще все это сделано
Выкуп спецтехники 888 Профи (558) 2 недели назад
Проблема в вашем коде заключается в том, что вы пытаетесь обратиться к элементам массива ArrayFind, которые не существуют. Внутри вложенного цикла вы используете индекс j для доступа к элементам массива ArrayFind, но вы указываете диапазон до ArrayNumber[i].length-1, что означает, что последний элемент в каждой строке массива ArrayFind остается неинициализированным.

Чтобы исправить это, вы можете изменить внутренний цикл следующим образом:
 for (let i = 0; i < ArrayNumber.length; i++) { 
ArrayFind[i] = []; // Инициализируем вложенные массивы
for (let j = 0; j < ArrayNumber[i].length; j++) {
ArrayFind[i][j] = 10;
}
}
ReturnoМудрец (11775) 2 недели назад
Спасибо! А почему нельзя задать пустой двумерный массив?
Выкуп спецтехники 888 Профи (558) Returno, Вы можете задать пустой двумерный массив, но важно понимать, что в этом случае он будет содержать нулевые элементы (то есть значения по умолчанию для числовых типов данных). Например, если вы объявите пустой двумерный массив следующим образом:
 let emptyArray = []; 
 
То emptyArray будет пустым массивом, и вы сможете добавлять в него элементы. Однако, если вы хотите создать двумерный массив с определенным размером (например, 10x10), то вам нужно явно инициализировать его элементы. В противном случае, при обращении к несуществующим элементам массива возникнет ошибка. вы пытались обратиться к элементам массива ArrayFind, которые не были инициализированы. Когда вы создаете двумерный массив, убедитесь, что вы правильно инициализируете все его элементы, чтобы избежать ошибок.
Похожие вопросы