如何按长度对Ruby字符串数组进行排序?

Dr.*_*ein 35 ruby arrays sorting

我该如何排序:

arr = ["aaa","aa","aaaa","a","aaaaa"];
Run Code Online (Sandbox Code Playgroud)

进入这个?

arr = ["a","aa","aaa","aaaa","aaaaa"];
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 70

arr = arr.sort_by {|x| x.length}
Run Code Online (Sandbox Code Playgroud)

或者在1.8.7+中:

arr = arr.sort_by(&:length)
Run Code Online (Sandbox Code Playgroud)

  • @DanR是的,它在`sort_by`产生的每个项目上调用方法`length` - 就像第一行一样.前缀`&`操作符将一个对象(特别是一个Proc对象或任何具有`to_proc`方法的对象,符号对象做的对象)转换为一个块.如果符号将是一个块,它在其参数上调用具有给定名称的方法(因为这就是定义`Symbol#to_proc`). (3认同)

Pri*_*han 12

您还可以使用sort:

arr.sort{|x, y| x.length <=> y.length}
Run Code Online (Sandbox Code Playgroud)


Ter*_* Bu 5

arr = arr.sort{|x,y| x.length - y.length} 也有效.