You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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) } # 输出:4
    

    sum会自动帮你处理累加逻辑,代码看起来更清爽,也是当前推荐的写法之一。

这些方法都是基于Ruby内置的优化方法实现的,效率比手动写嵌套循环要高,同时代码更简洁易维护,你可以根据自己的场景选择合适的方案~

内容的提问来源于stack exchange,提问作者JunJunBahadur

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 23:07:47