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

Ruby对相似hash键值求和 优化三重循环实现同品牌车辆总价统计

优化实现方案

你原来的三层循环时间复杂度为O(n²),品牌数量越多性能损耗越明显,我们可以用Ruby内置的迭代方法实现性能、可读性、简洁性都更高的版本:

# 单次遍历统计所有品牌的总价值,默认初始值为0
make_total = cars.each_with_object(Hash.new(0)) do |car, result|
  result[car[:make]] += car[:value]
end

# 转换为你要求的「单键哈希存入数组」的格式
values_array = make_total.map { |make, sum| { make => sum } }

p values_array
# 输出结果和你原代码完全一致:[{"Nissan"=>15000}, {"Toyota"=>6500}, {"Honda"=>12400}]

方案优势

  • 只需要遍历1次cars数组,时间复杂度为O(n),哪怕有上百个品牌也能保持极高的执行效率
  • 代码精简无重复逻辑,完全符合DRY原则,语义清晰,新手也能快速读懂逻辑
  • 无任何硬编码配置,新增、减少品牌都不需要修改代码逻辑

额外建议

你后续如果需要频繁按品牌查询总价值,直接用中间生成的make_total哈希查询即可,比如查询本田的总价值只需要写make_total["Honda"],比遍历数组查询效率高很多。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:54:02