Я пытаюсь отсортировать массив locations
от кратчайшего до самого длинного расстояния с помощью следующего кода:
for(var i=0; i<locations.length;i++)
{
var swapped = false;
for(var j=locations.length; j>i+1;j--)
{
if (locations[j]['distance'] < locations[j-1]['distance'])
{
var temp = locations[j-1];
locations[j-1]=locations[j];
locations[j]=temp;
swapped = true;
}
}
if(!swapped)
break;
}
При попытке запустить программу я получаю следующую ошибку в Firebug:
locations[j] is undefined
Я console.logged для массива местоположений, и это выглядит так:
[Object { id="1", marker=U, more...}, Object { id="4", marker=U, more...}, Object { id="6", marker=U, more...}, Object { id="3", marker=U, more...}, Object { id="2", marker=U, more...}, Object { id="5", marker=U, more...}]
Есть ли способ числовой индексации объектов, сохраняя при этом ассоциативную индексацию данных объектов?
Или есть ли способ доступа к элементу ith + 1 или ith-1, если я прибегаю к использованию this.distance в цикле foreach?