Ruby如何从数组中删除[]方括号?

Ruby如何从数组中删除[]方括号?,ruby,Ruby,我有这个阵列: [[16], [14], [13], [17], [18], [15, 16], [15, 14], [15, 13], [15, 17], [15, 18], [16, 14], [16, 13], [16, 17], [16, 18], [14, 13], [14, 17], [14, 18], [13, 17], [13, 18], [17, 18], [15, 16, 14], [15, 16, 13], [15, 16, 17], [15, 16, 18], [15,

我有这个阵列:

[[16], [14], [13], [17], [18], [15, 16], [15, 14], [15, 13], [15, 17], [15, 18], [16, 14], [16, 13], [16, 17], [16, 18], [14, 13], [14, 17], [14, 18], [13, 17], [13, 18], [17, 18], [15, 16, 14], [15, 16, 13], [15, 16, 17], [15, 16, 18], [15, 14, 13], [15, 14, 17], [15, 14, 18], [15, 13, 17], [15, 13, 18], [15, 17, 18], [16, 14, 13], [16, 14, 17], [16, 14, 18], [16, 13, 17], [16, 13, 18], [16, 17, 18], [14, 13, 17], [14, 13, 18], [14, 17, 18]]
如何删除一些数组方括号[],使数组如下所示:

[16, 14, 13, 17, 18, [15, 16], ..., [14, 13, 18], [14, 17, 18]]

这个问题有点不清楚。看起来你有一个数组,是吗?如果是这样,你可以这样做

count = 0
array.each { |x|
  if x.is_a?(Array)
    if x.length == 1
      array[count] = x[0]
    end
  end
  count = count + 1
}

这可能会变得更漂亮一些,但如果您想将单个元素数组交换为一个整数,那么它应该可以做您想要的事情。但是,我不完全确定你是否能在Ruby中做到这一点——拥有一个由整数和数组组成的数组——但我认为你能做到(你不能在Java中做到这一点)。

这个问题有点不清楚。看起来你有一个数组,是吗?如果是这样,你可以这样做

count = 0
array.each { |x|
  if x.is_a?(Array)
    if x.length == 1
      array[count] = x[0]
    end
  end
  count = count + 1
}
这可能会变得更漂亮一些,但如果您想将单个元素数组交换为一个整数,那么它应该可以做您想要的事情。但是,我不完全确定你是否可以在Ruby中做到这一点——拥有一个由整数和数组组成的数组——但我认为你可以(在Java中你不能做这样的事情)

或者,在适当的地方:

arr.collect! { |a| a.size == 1 ? a[0] : a }

非信徒的产出:

[1] pry(main)> arr = [[16], [14], [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
=> [[16], [14], [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
[3] pry(main)> new_arr = arr.collect { |a| a.size == 1 ? a[0] : a }
=> [16, 14, [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
# Note that arr is unchanged at this point.
[5] pry(main)> arr.collect! { |a| a.size == 1 ? a[0] : a }
=> [16, 14, [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
[6] pry(main)> arr
=> [16, 14, [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
或者,在适当的地方:

arr.collect! { |a| a.size == 1 ? a[0] : a }

非信徒的产出:

[1] pry(main)> arr = [[16], [14], [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
=> [[16], [14], [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
[3] pry(main)> new_arr = arr.collect { |a| a.size == 1 ? a[0] : a }
=> [16, 14, [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
# Note that arr is unchanged at this point.
[5] pry(main)> arr.collect! { |a| a.size == 1 ? a[0] : a }
=> [16, 14, [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]
[6] pry(main)> arr
=> [16, 14, [15, 16], [15, 14], [15, 16, 17], [15, 16, 18]]

这不是很优雅,但你会得到你想要的:)


这不是很优雅,但你会得到你想要的:)


所以只从长度为1的数组中删除括号?只是为了清除:OP想删除单个项目周围的括号。@kinakuta:是的,这就是我想要实现的。区别在于我不想删除]数组中的所有数组,但只删除长度为1的数组。所以只从长度为1的数组中删除括号?只是为了清除:OP想删除单个项目周围的方括号。@基纳库塔:是的,这就是我想实现的。区别在于我不想删除]数组中的所有数组,但只删除长度为1的数组。你可以有一个由你想要的任何内容组成的数组。你可以有一个由你想要的任何内容组成的数组。@Railsbeginner不是真的;这两个代码片段完全按照它们所说的做。第一个返回一个新数组,第二个修改数组
collect被调用。@Railsbeginner不是真的;这两个代码片段完全按照它们所说的做。第一个返回一个新数组,第二个修改数组
collect被调用。