arrays - 在 ruby​​ 中对数字和字符串数组进行排序的有效方法?

标签 arrays ruby string sorting integer

输入:

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/

相关文章:

Python 不会跳过 "if [strg] or [strg] in variable"

Java 数组索引越界异常表示数组比实际小

ios - 在数组上使用 NSUserDefaults

ruby - 艰苦学习 Ruby ex17 额外学分 3 - 合并为一行

java - 在java中复制字符串中的前N个单词

c++ - std::string 的 c_str() 函数如何返回空终止字符串?

arrays - 如何从 Swift 3 中的结构数组生成 JSON?

javascript - 将对象数组减少为键值对映射,保留值数组中的重复条目

ruby - 如何结束 Ruby 中 block 的执行?

ruby - 如何重构 ruby​​ 代码?