假设我有一个包含9个元素的唯一整数数组。
array = [3,5,7,9,2,4,8,1,6] 如何返回一个索引数组,从大到小告诉我原始整数数组的位置?
index_of_largest_to_smallest = [3,6,2,8,1,5,0,4,7]所以这会告诉我最大的数字在位置3,第二大的数字在位置6,等等。
我尝试过array.sort,但它将数组从大到小排序。我也尝试过array.each_with_index,但无法让它返回另一个数组。
发布于 2020-01-27 23:24:34
通过each_with_index、sort、map、last和reverse
[3,5,7,9,2,4,8,1,6].each_with_index #=> [[3, 0], [5, 1], [7, 2], [9, 3], [2, 4], [4, 5], [8, 6], [1, 7], [6, 8]]
.sort #=> [[1, 7], [2, 4], [3, 0], [4, 5], [5, 1], [6, 8], [7, 2], [8, 6], [9, 3]]
.map(&:last) #=> [7, 4, 0, 5, 1, 8, 2, 6, 3]
.reverse #=> [3, 6, 2, 8, 1, 5, 0, 4, 7]发布于 2020-01-28 00:05:23
array.each_index.sort_by { |i| -array[i] }
#=> [3, 6, 2, 8, 1, 5, 0, 4, 7]请参阅Array#each_index和Enumerable#sort_by的表单。请注意,当没有给定块时,Array#each_index会返回一个枚举数。
https://stackoverflow.com/questions/59933969
复制相似问题