2010-10-07 224 views
27

创建像这样的多暗数组后,我该如何对它进行排序?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"; 
} 

对于上面的例子,我需要“距离”来排序。 我已经看到了有关排序数组和多维数组的其他问题,但没有一个适用于此。

回答

44
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意思是ab相等,而<0意思是a第一。

+0

这工作,虽然“距离”是一个小数(如“964.543”),所以必须删除parseInt,否则排序不准确的小数点后。 – Jeff 2010-10-08 01:00:12

+5

@Deca'parseFloat(a.distance)'在这种情况下是适当的。 – lincolnk 2010-10-08 01:35:00

+1

啊!谢谢林肯! – Jeff 2010-10-13 17:11:53

10

你试过吗?

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

这个伎俩,谢谢。 – Jeff 2010-10-08 00:42:33

1

到目前为止应该工作发布两款排序功能,但你的主要问题将是使用location为变量,因为它已经是系统定义。

+3

+1好点。但它不是一个真正的答案...... :)你应该评论其中的一个。 – galambalazs 2010-10-07 22:13:49

+0

“location”不是实际的var名称,所以我们很好。 – Jeff 2010-10-07 22:47:29

相关问题