#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 неопределенного.
Настройте свой цикл, чтобы решить эту проблему, и все будет хорошо 🙂