MST
星途 面试题库

面试题:Ruby 中如何对包含多种数据类型的数组进行数据清洗与预处理

假设有一个数组 `data = [1, 'two', 3.14, nil, 'five', false]`,你需要使用 Ruby 编写代码,清洗掉 `nil` 值,将字符串类型的数字转换为实际数字类型,并删除布尔值。最后返回处理后的数组。请详细说明思路并给出代码实现。
50.5万 热度难度
编程语言Ruby

知识考点

AI 面试

面试题答案

一键面试

思路

  1. 首先,使用 reject! 方法从数组中删除 nil 值,reject! 会修改原数组并返回修改后的数组(如果有修改)。
  2. 接着,使用 map! 方法遍历数组,对于字符串类型的元素,检查是否可以转换为数字。如果可以,就将其转换为数字类型。map! 同样会修改原数组并返回修改后的数组。
  3. 最后,再次使用 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