我有一个像这样的多维数组
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"]]
答案 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"]]]
。