我试图获取地图!如果它们不在范围内,则替换掉值,但我无法使范围起作用。
array[0].map! { |x| x != (2..8) ? "foo" : x}
我正在处理一个有数字的二维数组,我需要将第一个数组中不在范围内的任何内容替换为另一个静态值,以便稍后进行整理。
我正在研究的阵列看起来像这样
[ "bar", "2", "3", "baz"]
需要将其转换为
[ "foo", "2", "3", "foo" ]
答案 0 :(得分:1)
您可以测试数组中元素的存在,如下所示:
(2..8).include? 1 => false
答案 1 :(得分:1)
对于给定的输入数组,您将字符串作为数组的元素。在将元素与范围进行比较之前,您需要将元素转换为numeric
。有几种方法可以帮助检查数字是否属于范围的一部分:Range#cover?
,Range#include?
和Range#===
。
以下是一种方法:
array[0].map! { |x| (2..8) === x.to_i ? x : "foo"}