假设我有一个看起来像这样的数组:
arr = [ 1, 5, "dog", 6 ]
如何删除String以使我的输出如下所示:
[ 1, 5, 6 ]
答案 0 :(得分:5)
另一种方法是使用 case-equal :
[1, 5, "dog", 6].reject &String.method(:===)
#⇒ [1, 5, 6]
答案 1 :(得分:3)
试试这个:
arr.select! { |el| el.class != String }
或者如果您只想要数字:
arr.select! { |el| el.is_a? Numeric }
答案 2 :(得分:2)
这是使用Enumerable#grep
或Enumerable#grep_v
的好机会:
[ 1, 5, "dog", 6 ].grep(Numeric)
# => [1, 5, 6]
[ 1, 5, "dog", 6 ].grep_v(String)
# => [1, 5, 6]
答案 3 :(得分:0)
您也可以采用相反的方式并使用reject!
。它会删除与您设置的条件匹配的所有元素。
arr.reject! { |el| !el.is_a? Numeric }
这在功能上与
相同arr.select! { |el| el.is_a? Numeric }