加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 数组选择获取true和false数组?

发布时间:2020-12-17 03:48:44 所属栏目:百科 来源:网络整理
导读:我知道我可以很容易地得到这个: array = [45,89,23,11,102,95]lower_than_50 = array.select{ |n| n50}greater_than_50 = array.select{ |n| !n50} 但有没有一种方法(或一种优雅的方式)通过只运行一次来??获得这个? [lower_than_50,greater_than_50] = arr
我知道我可以很容易地得到这个:

array = [45,89,23,11,102,95]
lower_than_50 = array.select{ |n| n<50}
greater_than_50 = array.select{ |n| !n<50}

但有没有一种方法(或一种优雅的方式)通过只运行一次来??获得这个?

[lower_than_50,greater_than_50] = array.split_boolean{ |n| n<50}

解决方法

over,under_or_equal = [45,95].partition{|x| x>50 }

或者干脆:

result = array.partition{|x| x>50 }
p result #=> [[89,95],[45,11]]

如果您希望将结果作为一个包含两个子数组的数组.

编辑:作为奖励,如果你有两个以上的选择并希望拆分数字,你可以这样做:

my_custom_grouping = -> x do
  case x
    when 1..50   then :small
    when 51..100 then :large
    else              :unclassified
  end
end

p [-1,2,40,70,120].group_by(&my_custom_grouping) #=> {:unclassified=>[-1,120],:small=>[2,40],:large=>[70]}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读