我有一个像这样的数组
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]]
。请帮忙。
答案 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]}