输入:
arr = [4,2,'b',5,'c','a',7]
输出:
[2,4,5,7,'a','b','c']
我能想到这个:
int_arr = arr.select {|x| x.instance_of?(Integer)}.sort
str_arr = arr.select {|x| x.instance_of?(String)}.sort
int_arr + str_arr
请建议一种有效的方法。
最佳答案
一种方法是按整数元素对数组进行分区,以确保它们保持在第一位,然后对每个数组的元素进行排序:
[4,2,'b',5,'c','a',7].partition { |e| e.is_a?(Integer) }.flat_map(&:sort)
# [2, 4, 5, 7, "a", "b", "c"]
关于arrays - 在 ruby 中对数字和字符串数组进行排序的有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58843234/