我在 Ruby中有一个数组数组: price_list = [ ['Brand-1', 'Model-1', 100.00], ['Brand-1', 'Model-2', 200.00], ['Brand-2', 'Model-1', 10.00], ['Brand-2', 'Model-2', 20.00], ['Brand-1', 'Model-1', 110.00], ['Brand-1', 'Model-2', 190.0
price_list = [ ['Brand-1', 'Model-1', 100.00], ['Brand-1', 'Model-2', 200.00], ['Brand-2', 'Model-1', 10.00], ['Brand-2', 'Model-2', 20.00], ['Brand-1', 'Model-1', 110.00], ['Brand-1', 'Model-2', 190.00], ['Brand-1', 'Model-3', 300.00], ... ['Brand-n', 'Model-n', 1234.00] ]
我需要创建只有独特产品和最低价格的新阵列.像这样的东西:
new_price_list = [ ['Brand-1', 'Model-1', 100.00], ['Brand-2', 'Model-1', 10.00], ['Brand-2', 'Model-2', 20.00], ['Brand-1', 'Model-2', 190.00], ['Brand-1', 'Model-3', 300.00], ... ['Brand-n', 'Model-n', 1234.00] ]
Ruby中最快,最漂亮的方法是什么?
按键分组(品牌型号),然后在分组数组上获得最低价格:prices = [ ['Brand-1', 'Model-1', 100.00], ['Brand-1', 'Model-2', 200.00], ['Brand-2', 'Model-1', 10.00], ['Brand-2', 'Model-2', 20.00], ['Brand-1', 'Model-1', 110.00], ['Brand-1', 'Model-2', 190.00], ['Brand-1', 'Model-3', 300.00], ] grouped = prices.group_by { |brand, model, price| [brand, model] } grouped.values.map { |grouped_prices| grouped_prices.min_by(&:last) }
输出:
[["Brand-1", "Model-2", 190.0], ["Brand-1", "Model-3", 300.0], ["Brand-2", "Model-1", 10.0], ["Brand-2", "Model-2", 20.0], ["Brand-1", "Model-1", 100.0]]