从哈希数组中获取值数组

时间:2015-06-15 10:39:44

标签: ruby hash

我有一个像这样的数组

arr = [{:id=>1}, {:id=>2}, {:id=>3}, {:id=>4}, {:id=>5}, {:id=>6}, {:id=>7}, {:id=>8}]

结果应为

result = [1, 2, 3, 4, 5, 6, 7, 8]

我使用了arr.map { |i| i.values }。但结果是[[1], [2], [3], [4], [5], [6], [7], [8]]。请帮忙。

2 个答案:

答案 0 :(得分:4)

你应该压扁结果,以获得所需的输出:

arr.flat_map { |i| i.values }

阅读flat_map

我不知道你的实际意图,如果你想收集所有 ID ,你可以写:

arr.collect { |h| h[:id] }

答案 1 :(得分:0)

使用flatten用于返回一维一个新数组,该数组是该数组的一维展平(递归)

 arr.map {|i| i.values}.flatten

或者只是映射所有ids

arr.collect {|i| i[:id]}