Rails - 在多维数组

时间:2016-02-22 02:17:17

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个像这样的多维数组

 b = [["1", ["val1", "val2", "val2", "val3", "val3"]], ["2", ["val1", "val1", "val2", "val2", "val3"]]

数组中的第二个值是另一个数组。我试图在数组中取代第二个值的这些值是唯一的(有点难以解释)。

我查看了文档,最接近的是b.uniq { |s| s.second }。这只是检查第二个值与其他第二个值没有重复。因此,在这种情况下,如果第二个数组中的数组与第二个值中的另一个数组相同,则会删除副本。

我无法删除数组值中数组内的重复项。 这就是我想要的结果,如

[["1", ["val1", "val2", "val3"]], ["2", ["val1", "val2", "val3"]]

3 个答案:

答案 0 :(得分:4)

以下是解决方案:

arr = arr.map{|x| [x[0],x[1].uniq]}

答案 1 :(得分:0)

这将按照您想要的方式过滤原始数组:

b.each {|ar| ar.second.uniq!}

答案 2 :(得分:0)

这段代码可以解决问题。

b = [["1", ["val1", "val2", "val2", "val3", "val3"]], ["2", ["val1", "val1", "val2", "val2", "val3"]]]
i = 0
while i < b[1].length
    b[i][1] = b[i][1].uniq
    i += 1
end
p b

这将返回[["1", ["val1", "val2", "val3"]], ["2", ["val1", "val2", "val3"]]]