与多维数组 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 &lt;&lt; index if index &gt; 0 错了,应该是acc &lt;&lt; index if index。此外,结果中可能有重复项:find_indexes([1,2,3,4,5,6], [[2,4],2]) =&gt; [1, 3, 1]

以上是关于与多维数组 ruby​​ 的数组值比较的主要内容,如果未能解决你的问题,请参考以下文章

在 Ruby 中从多维数组创建排列

在 Ruby 中从多维数组创建排列

如何添加来自不同数组的多维数组值

将一个数组值与另一个多维数组匹配,然后从多维数组中获取值

PHP比较由CSV制作的多维数组中的键/值

关联数组与多维数组,VBA