Ошибка свидетельствует о наличии повторяющихся идентификаторов заказов в данных. В результате поиск производит больше заказов, чем имеется элементов в orderIdDateCorrectionDict
, а index
увеличивается за пределами этого массива, производя неопределенное значение (и, таким образом, «не может прочитать свойство ... неопределенного»)
На этапе отладки подтвердите, что вы получаете ровно N заказов при запросе N идентификаторов. Если вы этого не сделаете, то у вас есть неуникальные идентификаторы, и исправление должно быть сделано в другом месте, где бы эти дубликаты не создавались.
Чтобы защитить код OP от этой проблемы, независимо от того, как настроены идентификаторы, не используйте параллельный счетчик index
. Вместо этого найдите исправление по orderId, вот так ...
function orderCorrectionForId(orderId) {
return orderIdDateCorrectionDict.find(oc => oc.orderId === orderId)
}
// no need for the index variable
// in the forEach loop...
function (order) {
let correction = orderCorrectionForId(order.OrderId)
if (correction) {
order.TransDate.DateTime = order.TransDate.DateTime.addDays(correction.dayCorrection);
// and so on...
}
Но начните с регистрации order
в этой функции forEach
, чтобы вы могли решить проблему root, которая - результат запроса, которого вы не ожидаете.