ruby-on-rails - 从 json 中获取数字最小的 .each 循环结果
问题描述
我有一个来自运输 API 的 API 响应,我想默认自动选择最低运费。
这是json:
[
{"serviceName"=>"USPS First Class Mail - Letter", "serviceCode"=>"usps_first_class_mail", "shipmentCost"=>0.8, "otherCost"=>0.0},
{"serviceName"=>"USPS First Class Mail - Large Envelope or Flat", "serviceCode"=>"usps_first_class_mail", "shipmentCost"=>1.3, "otherCost"=>0.0},
{"serviceName"=>"USPS First Class Mail - Package", "serviceCode"=>"usps_first_class_mail", "shipmentCost"=>2.84, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Package", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>7.82, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Medium Flat Rate Box", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>12.8, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Small Flat Rate Box", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>7.5, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Large Flat Rate Box", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>17.6, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Flat Rate Envelope", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>6.95, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Flat Rate Padded Envelope", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>7.55, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Regional Rate Box A", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>9.95, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Regional Rate Box B", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>16.1, "otherCost"=>0.0},
{"serviceName"=>"USPS Priority Mail - Legal Flat Rate Envelope", "serviceCode"=>"usps_priority_mail", "shipmentCost"=>7.25, "otherCost"=>0.0}
]
然后我想定义最低价格的,然后传递给支付处理器。
我尝试使用 <%= rate["shipmentCost"].min %>
但得到了undefined method
min' for 0.8:Float`... 从 json 响应来看,哪个 0.8 是最低的选项。
我怎样才能让每个循环或一般的循环找出最低的`rate [“shipmentCost”],然后定义它,以便我可以使用它来增加商品的价格。
例如,我想做类似的事情:
rate_to_use = rate["shipmentCost"].min
然后使用“price + rate_to_use = total”处理付款。然后稍后将使用相同的最低费率创建标签或与之匹配以进行运输。
解决方案
您可以使用Enumerable#min_by:
cheapest = @shipping_rates.min_by{|rate| rate['shipmentCost'] }
推荐阅读
- wordpress - wordpress 中的网络研讨会
- java - 在每次出现另一个修复字符时插入一个修复字符
- android - 如何防止后台服务在Android中崩溃
- regex - 编写一个匹配至少 x 个前瞻条件的正则表达式
- javascript - javascript 中 ....loop 语法有什么区别?
- apache-spark-sql - spark sql:选择 DecimalType 列的比例大于数字的行
- odoo-12 - 如何解决“Uncaught TypeError: Cannot read property 'type' of undefined when add button to tree view of Odoo”?
- javascript - 为什么从轮播内部元素的事件调用Bootstrap 4轮播暂停功能时不起作用?
- powershell - PowerShell 数组问题与变量
- maven - 如何在 Maven 中自定义 JMeter 报告以显示 Pass-Fail 而不是 OK-KO/在报告中添加更多静态值?