如何根据其转换对数组排序

时间:2019-01-20 10:10:32

标签: ruby sorting

我想对数组排序:

initial_array = ['23', '504', '2']

基于每个元素的数字之和。转换后的数组为:

[5, 9, 2] 

通过映射对数组进行排序:

chars.map(&:to_i).reduce(:+)

给出排序后的转换数组:

sorted_transformed_array # => [2, 5, 9]

排序后的初始数组为:

['2', '23', '504']

如何根据initial_arraysorted_transformed_array进行排序?有没有这样做的方法?

sort_by!方法有什么区别?

1 个答案:

答案 0 :(得分:3)

sort_by方法结合使用该转换/计算

红宝石2.4之前

array.sort_by { |item| item.chars.map(&:to_i).reduce(0, :+) }

从ruby 2.4开始

array.sort_by { |item| item.chars.map(&:to_i).sum }