如何按自定义条件对javascript数组进行排序?不是字母或数字

时间:2014-08-28 13:30:35

标签: javascript sorting

所以,我有一个很好的数组:

["Mexico", "Belize", "Canada", "US"]

我想从北到南排序。

我想:

["Canada", "US", "Mexico", "Belize"]

如何在javascript中执行此操作?

我有预设的国家/地区。我可以告诉Javascript“嘿,我刚刚给你的那几个国家?把它分类加拿大,美国,墨西哥,伯利兹。”

这是一个静态图形,不必是动态的,硬编码好。

我有: my_array.sort()但我不知道下一步该做什么。在线的所有内容似乎都按数字或字母排序。

FWIW,国家名单就是一个例子。在现实生活中,我试图对政府资金来源进行分类:州,联邦,信托基金,烟草和解。但这是一个非常抽象的问题。最好使用像国家这样具体的东西,没有?

1 个答案:

答案 0 :(得分:2)

您可以创建一个返回国家/地区纬度的函数,如:

function getLatitude(country) {
  var countries = {
   Belize : 17.0667,
   Canada : 45.4,
   Mexico : 19,
   US : 38.8833 // Should this be America?
  }
  return countries[country];
}
然而,你需要弄清楚纬度是什么 - 也许它是一个质心?也许它来自提供位置纬度的服务?

然后对它们进行排序:

["Mexico", "Belize", "Canada", "US"].sort(function(a, b) {
  return getLatitude(a) - getLatitude(b);
});
// ["Belize", "Mexico", "US", "Canada"]

你需要弄清楚如何处理你无法获得自由的位置,如果它们被移除或分类到一端或另一端?