Javascript: сортировать многомерный массив
После создания многодискового массива, подобного этому, как его сортировать?
Предполагается, что "маркеры" уже определены:
var location = [];
for (var i = 0; i < markers.length; i++) {
location[i] = {};
location[i]["distance"] = "5";
location[i]["name"] = "foo";
location[i]["detail"] = "something";
}
В приведенном выше примере мне нужно отсортировать его по "расстоянию".
Я видел другие вопросы по сортировке массивов и многомерным массивам, но никто не работает для этого.
Ответы
Ответ 1
location.sort(function(a,b) {
// assuming distance is always a valid integer
return parseInt(a.distance,10) - parseInt(b.distance,10);
});
javascript array.sort
метод имеет необязательный параметр, который является ссылкой функции для пользовательского сравнения. значения возврата >0
означают b
во-первых, 0
означает a
и b
равны, а <0
означает a
.
Ответ 2
Вы пробовали это?
location.sort(function(a,b) {
return a.distance - b.distance;
});
Ответ 3
Обе функции сортировки, опубликованные до сих пор, должны работать, но ваша основная проблема будет использовать location
как переменную, поскольку она уже определена системой.