如何在二维数组中搜索

Kum*_*umo 6 ruby arrays search

我正在努力学习如何在二维数组中搜索; 例如:

array = [[1,1], [1,2], [1,3], [2,1], [2,4], [2,5]]
Run Code Online (Sandbox Code Playgroud)

我想知道如何在数组中搜索表单中的数组,[1, y]然后显示其他y数字是什么:[1, 2, 3].

如果有人可以帮助我理解如何只搜索数字(因为我发现很多例子包括字符串或哈希),甚至在哪里寻找合适的资源,这将是有帮助的.

saw*_*awa 7

Ruby允许您通过在块参数中使用括号来查看元素.select并且map只分配一个块参数,但您可以查看该元素:

array.select{|(x, y)| x == 1}
# => [[1, 1], [1, 2], [1, 3]]

array.select{|(x, y)| x == 1}.map{|(x, y)| y}
# => [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

您可以省略与以下之间的整个表达式对应的括号|...|:

array.select{|x, y| x == 1}
# => [[1, 1], [1, 2], [1, 3]]

array.select{|x, y| x == 1}.map{|x, y| y}
# => [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

作为编码风格,将未使用的变量标记为_:

array.select{|x, _| x == 1}
# => [[1, 1], [1, 2], [1, 3]]

array.select{|x, _| x == 1}.map{|_, y| y}
# => [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)


And*_*eko 6

您可以使用Array#selectArray#map方法:

array = [[1,1], [1,2], [1,3], [2,1], [2,4], [2,5]]
#=> [[1, 1], [1, 2], [1, 3], [2, 1], [2, 4], [2, 5]]
array.select { |el| el[0] == 1 }
#=> [[1, 1], [1, 2], [1, 3]]
array.select { |el| el[0] == 1 }.map {|el| el[1] }
#=> [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

有关阵列的更多方法,请探索文档.


hir*_*lau 5

如果您先选择然后映射,则可以使用grep函数将其全部集成到一个函数中:

p array.grep ->x{x[0]==1}, &:last #=> [1,2,3]
Run Code Online (Sandbox Code Playgroud)