Заголовок вашего цикла выглядит следующим образом:
for (var i = 0; i < reiserute.length; i++)
Это означает, что i
будет варьироваться от 0
до reiserute.length - 1
включительно.
Затем в теле вашего цикла вы делаете следующее:
z += avstandArray[reiserute[i]][reiserute[i + 1]];
Обратите особое внимание на reiserute[i + 1]
.Поскольку i
работает с 0
до reiserute.length - 1
, i + 1
будет варьироваться от 1
до reiserute.length
.Итак, на последней итерации вы пытаетесь получить доступ к reiserute[reiserute.length]
.И это будет undefined
- вы пытаетесь получить доступ к индексу «один за пределами» конца массива.
Итак, вы оцениваете
avstandArray[reiserute[i]][undefined]
который сам по себе undefined
.Затем +=
принудительно приводит это к Number
, откуда исходит ваше NaN
.
Хотя я не уверен, каково точное намерение, стоящее за вашим кодом, самым простым решением было быизмените заголовок вашего цикла, чтобы не получать доступ к элементам, кроме последнего в массиве.То есть сделайте это вместо:
for (var i = 0; i < reiserute.length - 1; i++)