与多维数组 ruby 的数组值比较
Posted
技术标签:
【中文标题】与多维数组 ruby 的数组值比较【英文标题】:Array value comparison with a multidimension array ruby 【发布时间】:2021-12-08 04:13:13 【问题描述】:如果我有 2 个数组,比如说:
arr1 = [1,2,3,4,5,6]
arr2 = [[2,4],12]
我想返回变量:
result=[1,3]
如何创建一个变量,该变量从 arr1 返回与 arr2 嵌套数组中的值相对应的索引。
【问题讨论】:
为什么您希望结果是[1,3]
而不是[[1,3], nil]
?
也很少挑剔——你永远不会返回一个变量。你返回值。变量是一个占位符,对某个值的引用。变量不返回任何内容。
基本上我想要做的是获取 arr1 值并检查哪些匹配 arr2[0] 值(在我的情况下是 2 和 4)然后我想打印出 arr1 的索引包含匹配值(在我的情况下,索引是 1 和 3)
这意味着您只想忽略该数组的所有其他元素,除了第一个元素?您的要求非常不明确,现在可以通过简单的return [1,3]
来满足
【参考方案1】:
首先,您需要展平第二个多维数组,然后在第一个数组中找到该项目索引。
arr1 = [1,2,3,4,5,6]
arr2 = [[2,4],12]
def find_indexes(arr1, arr2)
arr2.flatten.each_with_object([]) do |item, acc|
index = arr1.index(item).to_i
acc << index if index >= 0
end
end
find_indexes(arr1, arr2)
#=> [1,3]
【讨论】:
当第二个数组是:arr2 = [[1,4],12]
时这似乎不起作用
是的,acc << index if index > 0
错了,应该是acc << index if index
。此外,结果中可能有重复项:find_indexes([1,2,3,4,5,6], [[2,4],2]) => [1, 3, 1]
以上是关于与多维数组 ruby 的数组值比较的主要内容,如果未能解决你的问题,请参考以下文章