Ruby,高级数组排序
我有以下数组:Ruby,高级数组排序,ruby,arrays,Ruby,Arrays,我有以下数组: [ ["Częstochowa", "Częstochowa"], ["Jaworzno", "Jaworzno"], ["Katowice", "Katowice"], ["Nowy Dwór Mazowiecki", "Nowy Dwór Mazowiecki"], ["Ożarowice", "Ożarowice"], ["Katowice Airport", "Ożarowice"], ["Raszków", "Raszków"],
[
["Częstochowa", "Częstochowa"],
["Jaworzno", "Jaworzno"],
["Katowice", "Katowice"],
["Nowy Dwór Mazowiecki", "Nowy Dwór Mazowiecki"],
["Ożarowice", "Ożarowice"],
["Katowice Airport", "Ożarowice"],
["Raszków", "Raszków"],
["Sosnowiec", "Sosnowiec"],
["Tarnowskie Góry", "Tarnowskie Góry"],
["Warszawa", "Warszawa"], ["Katowice, Airport Ożarowice"],
["Warszawa, Airport Modlin", "Nowy Dwór Mazowiecki"],
["Warszawa, Airport Okęcie", "Warszawa"]
]
现在我想在我们有
[“Katowice”,“Katowice”]
时对其进行排序,下一个是[“Katowice Airport”“Ożarowice”]
。有什么办法可以做到这一点吗?请注意,在您的问题中,[“卡托维兹,机场”Ożarowice”]
无效-我将其更改为[“卡托维兹,机场”,“Ożarowice”]
,因为这似乎适合其他阵列中的模式
a = [
["Częstochowa", "Częstochowa"],
["Jaworzno", "Jaworzno"],
["Katowice", "Katowice"],
["Nowy Dwór Mazowiecki", "Nowy Dwór Mazowiecki"],
["Ożarowice", "Ożarowice"],
["Raszków", "Raszków"],
["Sosnowiec", "Sosnowiec"],
["Tarnowskie Góry", "Tarnowskie Góry"],
["Warszawa", "Warszawa"], ["Katowice, Airport", "Ożarowice"],
["Warszawa, Airport Modlin", "Nowy Dwór Mazowiecki"],
["Warszawa, Airport Okęcie", "Warszawa"]
]
a.sort_by { |element| element.first }
如果我理解正确,一个简单的
arr.sort
# => [["Częstochowa", "Częstochowa"], ["Jaworzno", "Jaworzno"],
# ["Katowice", "Katowice"], ["Katowice, Airport", "Ożarowice"],
# ["Nowy Dwór Mazowiecki", "Nowy Dwór Mazowiecki"],
# ["Ożarowice", "Ożarowice"], ["Raszków", "Raszków"],
# ["Sosnowiec", "Sosnowiec"], ["Tarnowskie Góry", "Tarnowskie Góry"],
# ["Warszawa", "Warszawa"], ["Warszawa, Airport Modlin", "Nowy Dwór Mazowiecki"],
# ["Warszawa, Airport Okęcie", "Warszawa"]]
对数组进行排序时,
排序
的默认行为是按第一个元素进行排序,使用第二个元素作为平分符。我的问题的答案是:
sort_by{|x| ActiveSupport::Inflector.transliterate(x[0])}
谢谢大家的帮助。那么你想让它们按字母顺序排列?你想让它们按什么顺序排列?我做了一个小编辑,以使数据更清晰。但是,你提到的两个
Katowice Airport
是不同的,这两个都不是有效的Ruby。请解决这个问题,这使问题很难理解(我们需要知道是否“Airport”)“在第一个或第二个字符串中),但只有在字符串中,我的开头没有波兰特殊字符,如“Ł”。当我有了Łódźcity,它就会自动出现在列表的末尾…@Mateusz Urbański:这是一个不同的问题。(虽然比你原来的问题有趣得多,它本质上变成了“Q.我如何排序?a.使用.sort
”)@MateuszUrbański-看这个问题:-它建议使用gem-@Urigassi我不知道平局破坏者,很高兴知道,谢谢!哦,我刚刚为非标准字符实现了一个排序器-这有点痛苦,但很有可能。但是gem可能不是一个坏的选择。如果这是正确的,那么请您重新命名你的问题中没有关于处理屈折变化的内容。