Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ruby中的数组和数组_Ruby_Arrays_Multidimensional Array - Fatal编程技术网

ruby中的数组和数组

ruby中的数组和数组,ruby,arrays,multidimensional-array,Ruby,Arrays,Multidimensional Array,我正在寻找以下输出 arry = [["a",3.0,3], ["b",4.0,4], ["c",5.0,5]] 这就是我所做的 根据数组的大小,我迭代了循环 首先,我采用了第一个元素 删除它并创建一个新数组。我重复了一遍 通过新数组,计算和并将元素推送到 新阵列2 我在末尾添加了删除的元素 我无法生成上述格式的输出。我能做的输出是 [["a", 3.0, [["b", 4.0, 7], ["c", 5.0, 8]]], ["b", 4.0, [["a", 3.0, 7], ["c",

我正在寻找以下输出

arry = [["a",3.0,3], ["b",4.0,4], ["c",5.0,5]]
这就是我所做的

  • 根据数组的大小,我迭代了循环
  • 首先,我采用了第一个元素
  • 删除它并创建一个新数组。我重复了一遍 通过新数组,计算和并将元素推送到 新阵列2
  • 我在末尾添加了删除的元素
我无法生成上述格式的输出。我能做的输出是

[["a", 3.0, [["b", 4.0, 7], ["c", 5.0, 8]]],
 ["b", 4.0, [["a", 3.0, 7], ["c", 5.0, 9]]],
 ["c", 5.0, [["a", 3.0, 8], ["b", 4.0, 9]]]]
除此之外,如何编码以显示只允许小于8的元素

然后得到这个输出

[a,3.0,b,4.0,7]
7 here is 3+4
[a,3.0,c,5.0,8]
[b,4.0,c,5.0,9]
..etc
更新:很高兴这就是你想要的。这很难看,但我认为它满足了您的过滤目标:

[["a", 3.0, [["b", 4.0, 7], ["c", 5.0, 8]]],
 ["b", 4.0, [["a", 3.0, 7], ["c", 5.0, 9]]],
 ["c", 5.0, [["a", 3.0, 8], ["b", 4.0, 9]]]]

再次注意,这与您指定的输出略有不同,但我相信这是您真正想要的。(如果每个组有多个内部数组匹配怎么办?

转换规则是什么(我看不出您预期的输出意味着什么)?@SergioTulentsev看起来像一个元素和其他元素之间的映射,当一个特定元素是键时,它们的值被添加到其他元素中。您的两个输出都无效-您缺少了一些]我已更改了输出并更正了错误]。谢谢你指出这一点!我更改了问题中的输出,以反映我的实际意思!现在进入第二个问题,如何显示,让我们只说小于8的元素?
arry.map do |inner|
  dup = inner.dup
  n = dup[2]
  dup[2] = []

  arry.each do |other|
    next if other == inner # Only want other inner arrays
    other_dup = other.dup
    other_dup[2] += n
    dup[2] << other_dup
  end

  dup
end
[["a", 3.0, [["b", 4.0, 7], ["c", 5.0, 8]]],
 ["b", 4.0, [["a", 3.0, 7], ["c", 5.0, 9]]],
 ["c", 5.0, [["a", 3.0, 8], ["b", 4.0, 9]]]]
mapped.map do |inner|
  inner_dup = inner.dup

  inner_dup[2] = inner_dup[2].select do |inner_inner|
    inner_inner[2] < 8  # Condition for the elements you want to test
  end

  inner_dup
end
[["a", 3.0, [["b", 4.0, 7]]], ["b", 4.0, [["a", 3.0, 7]]], ["c", 5.0, []]]