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]} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |