面试题答案
一键面试代码实现
def filter_and_square_even(arr)
arr.select { |num| num.even? }.map { |num| num ** 2 }
end
常见错误
- 使用错误的迭代器方法:例如错误地使用
each
方法,each
主要用于遍历执行块中的代码,但不会返回经过筛选和变换后的新数组。正确应该使用select
筛选和map
变换。 - 筛选条件错误:如把判断偶数的条件写错,写成
num % 2 != 0
,这样筛选出来的就是奇数而非偶数。 - 平方操作错误:例如在
map
块中使用错误的运算符,写成num * 2
,这是将数字翻倍而不是平方。 - 未正确处理空数组:如果传入一个空数组,虽然上述代码可以正确返回空数组,但如果代码逻辑写得过于复杂,可能会在处理空数组时出现
nil
相关的错误,比如未考虑空数组时调用数组元素方法导致NoMethodError
。