vik*_*sad 6 ruby arrays sorting string integer
输入:
arr = [4,2,'b',5,'c','a',7]
Run Code Online (Sandbox Code Playgroud)
输出:
[2,4,5,7,'a','b','c']
Run Code Online (Sandbox Code Playgroud)
我可以想到:
int_arr = arr.select {|x| x.instance_of?(Integer)}.sort
str_arr = arr.select {|x| x.instance_of?(String)}.sort
int_arr + str_arr
Run Code Online (Sandbox Code Playgroud)
请提出一种有效的方法。
一种方法是partition通过将这些元素设置为Integer 来对数组进行确定,以确保它们首先保留,然后对每个数组的元素进行排序:
[4,2,'b',5,'c','a',7].partition { |e| e.is_a?(Integer) }.flat_map(&:sort)
# [2, 4, 5, 7, "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)