面试题答案
一键面试思路
- 首先,使用
reject!
方法从数组中删除nil
值,reject!
会修改原数组并返回修改后的数组(如果有修改)。 - 接着,使用
map!
方法遍历数组,对于字符串类型的元素,检查是否可以转换为数字。如果可以,就将其转换为数字类型。map!
同样会修改原数组并返回修改后的数组。 - 最后,再次使用
reject!
方法删除布尔值。
代码实现
data = [1, 'two', 3.14, nil, 'five', false]
data.reject! { |element| element.nil? }
data.map! do |element|
if element.is_a?(String) && element.match?(/\A[-+]?\d+(\.\d+)?\z/)
element.to_f
else
element
end
end
data.reject! { |element| element.is_a?(TrueClass) || element.is_a?(FalseClass) }
puts data.inspect