JavaScript:对多维数组进行排序

28

创建了一个多维数组后,如何对其进行排序?

假设'markers'已经被定义:

var location = [];
for (var i = 0; i < markers.length; i++) {
  location[i] = {};
  location[i]["distance"] = "5";
  location[i]["name"] = "foo";
  location[i]["detail"] = "something";
}
对于上述的例子,我需要按照“distance”进行排序。 我看过其他关于数组和多维数组排序的问题,但似乎没有一个适用于这个问题的解决方案。
3个回答

46
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表示ba之前,0表示ab相等,<0表示ab之前。


这个方法可行,但是“distance”是一个小数(例如“964.543”),所以必须删除parseInt,否则在小数点后面排序不准确。 - Jeff
5
在这种情况下,@Deca应该使用parseFloat(a.distance) - lincolnk
运行起来就像魔法一样!非常简单,但完美无缺。 - Allen Gingrich

10

你试过这个了吗?

location.sort(function(a,b) {
    return a.distance - b.distance;
});

1

目前为止发布的两个排序函数都应该可以工作,但你的主要问题将是使用location作为变量,因为它已经是系统定义的。


3
+1 很好的观点。但这并不是一个真正的答案... :) 你应该在其中一条评论下发表评论。 - gblazex

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接