我想得到存储在数组中的对象每次出现的坐标如果我有一个数组:
array = [["foo", "bar", "lobster"], ["camel", "trombone", "foo"]]
一个对象,我想得到:
[[0,0], [1,2]]
以下几点可以做到这一点,但这是精心设计和丑陋的:
array.map
.with_index{
|row,row_index| row.map.with_index {
|v,col_index| v=="foo" ? [row_index,col_index] : v
}
}
.flatten(1).find_all {|x| x.class==Array}
有没有更直截了当的方法?这是asked之前,并产生了一个类似的不雅的解决方案。
最佳答案
这里有一个稍微优雅一点的解决方案我有:
在结尾使用flat_map
而不是flatten
ing
使用.each_index.select
而不是.map.with_index
,然后必须在末尾剥离非数组,这真的很难看
添加缩进
array.flat_map.with_index {|row, row_idx|
row.each_index.select{|i| row[i] == 'foo' }.map{|col_idx| [row_idx, col_idx] }
}
关于ruby - 获取二维数组中值的坐标,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25816978/