Почему Javascript не может прочитать занятое значение? Ошибка типа: не удается прочитать свойство ‘weight’ неопределенного

#javascript

#javascript

Вопрос:

У меня действительно странная проблема, которой не должно быть.

Приведенный ниже код представляет собой простую функцию.

Но проблема в том, что у меня ошибка с выделенным жирным шрифтом ‘truckArray [0].weight’, в котором говорится, что TypeError: не удается прочитать свойство ‘weight’ неопределенного

Я проверил, что значение не определено с помощью console.log(truckArray[0]),

 function solution(bridge_length, weight, truck_weights) {
    const truckArray = truck_weights.map((v)=>{
        return {
            weight: v,
            movingDistance: 0,
        };
    });   

    const inProcess = [];
    let timeCount = 0;
    let inProcessTotalWeight = 0;

    do {
        timeCount  ; 
    
        if ( (**truckArray[0].weight**   inProcessTotalWeight) <= weight) {
            inProcess.push(truckArray.shift());
        }
        
        inProcess.forEach((v)=>{
            v.movingDistance  = 1;
        })
        
        if (inProcess[0].movingDistance > bridge_length) {
            inProcess.shift();
        }
        
    }while(inProcess.length !== 0 );

    return timeCount;
};
  

Пожалуйста, дайте мне идею.
Спасибо

Комментарии:

1. Разве ваш truck_weights массив не пустой? Вот почему truckArray[0] не определено.

Ответ №1:

Пожалуйста, попробуйте truckArray[0]['weight']

Ответ №2:

Вы пробовали:

     if ((parseInt(truckArray[0].weight)   inProcessTotalWeight) <= weight) {
  

Ответ №3:

Проверьте, является ли truckArray это массивом действительных чисел, а не пустым массивом.

Ответ №4:

Ваш код, вероятно, работает для большей части массива весов грузовиков.

Проблема в цикле. Когда вы это сделаете truckArray.shift() , у вас в конечном итоге ничего не останется, и поэтому при следующей попытке доступа вы получаете undefined truckArray[0] . Ошибка возникает при попытке ссылаться на weight неопределенного.

Настройте свой цикл, чтобы решить эту проблему, и все будет хорошо 🙂