我有来自2个不同位置的2个数组,但它们包含相同的元素。下面显示了我的内容:
@var2 = ["2/05/2008", "$1.5000", "$2.0000"]
["1/06/2007", "$1.4000", "$1.0000"]
@var3 = ["1/06/2007", "$1.4000", "$1.0000"]
["2/05/2008", "$1.5000", "$2.0000"]
这是代码我如何到达上面的那些数组...不是一个很好的红宝石代码我承认它
var1 = Nokogiri::HTML(open(file.htm))
var1.xpath('//tr[position() > 1]').map do |row|
@var2 = row.xpath('td').map(&:text)[0,3]
puts @var2
end
File.open('some.txt') do |file|
file.each_line do |line|
line1 = line.split(' ')
line2 = line1[0]
line3 = "$" + line1[1]
line4 = "$" + line1[2]
@var3 = line2.split(' ') + line3.split(' ') + line4.split(' ')
puts @var3
end
file.close()
end
在这两个变量中,我都有这样的多行。如何比较@var2
和@var3
?此外@var2
按日期降序排列。有没有办法比较两者的价值/内容并获得结果?这也意味着使用上述格式,如果我更改其中一个数组中的值,则比较应该失败,例如:
@var2 = ["2/05/2008", "$1.5000", "$2.0000"]
["1/06/2007", "$1.4000", "$1.0000"]
@var3 = ["1/06/2007", "$1.4456", "$1.0000"]
["2/05/2008", "$1.5000", "$2.2222"]
我尝试了几种方法,但不幸的是它没有用。我想我需要循环到数组并进行比较,但不知道该怎么做。
我已尝试@var2 & @var3
,@var2 - @var3
。如果我更改其中一个数组中的值,它们似乎不起作用。比较似乎仍然检查索引,并说找到匹配。我希望与每个数组中的值进行精确的逐行比较。
还有更多信息: -
我想知道数组是否包含完全相同的元素,顺序无关紧要。
数组var2和var3中可能存在重复项。数组大小将相同。不会有更少的元素,也不会有NIL。
答案 0 :(得分:2)
在比较数组之前对数组进行排序:
@var2.sort == @var3.sort
除非我遗漏了什么,否则这基本上就是问题所在。
答案 1 :(得分:1)
将长度与intersection的长度进行比较:
@var2.length == @var3.length && @var2.length == (@var2 & @var3).length
答案 2 :(得分:0)
怎么样
@var2.reverse == @var3
答案 3 :(得分:0)
使用
的-
类Array
运算符
2.1.1 :006 > arr1 = [1,2,3,4]
=> [1, 2, 3, 4]
2.1.1 :007 > arr2 = [4,3,2,1]
=> [4, 3, 2, 1]
2.1.1 :008 > arr1-arr2
=> []
2.1.1 :009 >
所以,你可以这样做
2.1.1 :001 > @var2 = [["2/05/2008", "$1.5000", "$2.0000"],
2.1.1 :002 > ["1/06/2007", "$1.4000", "$1.0000"] ]
=> [["2/05/2008", "$1.5000", "$2.0000"], ["1/06/2007", "$1.4000", "$1.0000"]]
2.1.1 :003 >
2.1.1 :004 > @var3 = [["1/06/2007", "$1.4000", "$1.0000"],
2.1.1 :005 > ["2/05/2008", "$1.5000", "$2.0000"]]
=> [["1/06/2007", "$1.4000", "$1.0000"], ["2/05/2008", "$1.5000", "$2.0000"]]
2.1.1 :006 > (@var2 - @var3) == []
=> true
2.1.1 :007 >