Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby,高级数组排序_Ruby_Arrays - Fatal编程技术网

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可能不是一个坏的选择。如果这是正确的,那么请您重新命名你的问题中没有关于处理屈折变化的内容。