Ruby:从数组中删除所有非字符串元素

Mat*_*oak -2 ruby arrays

我正在尝试用 ruby​​ 编写一个函数,给定一个具有不同数据类型的数组,返回一个仅包含字符串元素的新数组。例如,给定数组:

arr = [1, 3, 'hello', 'goodbye', 20, 'arrays are fun']
Run Code Online (Sandbox Code Playgroud)

我想编写一个函数来返回一个新数组,如下所示:

new_arr = ['hello', 'goodbye', 'arrays are fun']
Run Code Online (Sandbox Code Playgroud)

ruby 中是否有内置函数来完成给定数组中数据类型的分离?我能够用下面的循环来完成它。

result = arr.select do |elem|
   elem.is_a? Integer
end
Run Code Online (Sandbox Code Playgroud)

但我想知道 Ruby 是否有一个内置函数来实现循环正在做的事情,比如,arr.integers它接受一个数组并且只返回整数。

eug*_*ioy 5

array.delete_if { |obj| !(obj.is_a? String) }
Run Code Online (Sandbox Code Playgroud)

  • 或者 `keep_if` 来避免 `!` (3认同)