Javascript:对多维数组进行排序

Posted

技术标签:

【中文标题】Javascript:对多维数组进行排序【英文标题】:Javascript: sort multidimensional array 【发布时间】:2011-04-22 14:50:49 【问题描述】:

这样创建多维数组后,如何排序?

假设“标记”已经定义:

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);

);

javascriptarray.sort 方法有一个可选参数,它是自定义比较的函数引用。返回值是&gt;0 表示b 首先,0 表示ab 相等,&lt;0 表示a 首先。

【讨论】:

这行得通,虽然“距离”是小数(如“964.543”),所以必须删除 parseInt,否则小数点后排序不准确。 @Deca parseFloat(a.distance) 在这种情况下是合适的。 就像一个迷人的魅力!如此简单,但完美。【参考方案2】:

你试过了吗?

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

【讨论】:

【参考方案3】:

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

【讨论】:

+1 好点。但这并不是一个真正的答案...... :) 你应该评论其中一个。

以上是关于Javascript:对多维数组进行排序的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript:自动对可变多维数组进行对角排序

PHP:按子数组的出现次数对多维数组进行排序

按多列对多维数组进行排序

按子项的值对多维数组进行排序

按子数组的大小对多维数组进行排序

C#按多列对多维数组进行排序