如何在Ruby中高效统计嵌套数组的nil元素数量?寻求更简洁实现方案
更简洁高效的Ruby嵌套数组nil统计方案
嘿,你的嵌套循环写法完全没问题,但Ruby本身提供了好多更优雅、高效的内置方法来搞定这个需求,下面给你几个常用的方案:
一维化后直接统计(最简洁)
先用flatten把嵌套数组转换成一维数组,再用count(nil)直接统计nil的数量,一行代码就能搞定:chart = [[nil, 'Bob', nil], [nil, nil, 'Bill']] chart.flatten.count(nil) # 输出:4这个方法的优点是代码极度简洁,可读性拉满,适合大多数常规场景。
逐行累加统计(内存更友好)
如果你的嵌套数组特别大,不想生成额外的一维数组占用内存,可以用inject(或者等价的reduce)来逐行统计并累加:chart = [[nil, 'Bob', nil], [nil, nil, 'Bill']] chart.inject(0) { |total, row| total + row.count(nil) } # 输出:4这里初始值设为0,每遍历一行就把该行的nil数量加到总和里,全程不需要额外的数组对象,内存效率更高。
用sum方法简化累加(Ruby 2.4+)
Ruby 2.4及以上版本支持sum方法,写法比inject更直观:chart = [[nil, 'Bob', nil], [nil, nil, 'Bill']] chart.sum { |row| row.count(nil) } # 输出:4sum会自动帮你处理累加逻辑,代码看起来更清爽,也是当前推荐的写法之一。
这些方法都是基于Ruby内置的优化方法实现的,效率比手动写嵌套循环要高,同时代码更简洁易维护,你可以根据自己的场景选择合适的方案~
内容的提问来源于stack exchange,提问作者JunJunBahadur
相关产品推荐
相关产品推荐

