返回包含n

时间:2015-10-30 18:52:01

标签: arrays ruby

我试图找到一种方法来返回包含数字1的所有子数组的索引。例如,在这个2D数组中:

ary= [[0, 0, 0, 0],
      [0, 1, 0, 0],
      [0, 0, 0, 1],
      [0, 0, 0, 0]]

我的目标是返回[1, 2]

使用以下内容:

ary.index(ary.detect{|xyz| xyz.include?(1)})

仅返回1,这是检测到1的第一个子数组。

如何获取包含1

的子数组的所有索引

3 个答案:

答案 0 :(得分:0)

ary.map.with_index {|sub_ary, i| sub_ary.include?(1) ? i : nil}.compact    
=> [1, 2]

答案 1 :(得分:0)

使用select

irb(main):013:0> ary.select {|xyz| xyz.include?(1)}.map {|i| ary.index i}
=> [1, 2]

答案 2 :(得分:0)

ary.each_index.select { |i| ary[i].include?(1) }
  #=> [1,2]