我试图在红宝石中获得两个相等长度的数组之间的差异。
array1 = [1,2,3,4]
array2 = [1,2,4,5]
diffArray = []
diffArray = array1 - array2 # => [3]
但我想保存相对于array1
或array2
发生差异的索引。例如,我希望将diffArray
保存为
#diffArray => [nil,nil,3,nil]
或#diffArray => ["","",3,""]
有没有办法在Ruby中进行此操作?
您的问题不清楚。
如果您对值不匹配的位置上的 array1
的值感兴趣,则可能需要使用此信息:
array1 = [1,2,3,4]
array2 = [1,2,4,5]
array1.zip(array2).map { |a, b| a if a != b }
#=> [nil, nil, 3, 4]
如果您对值不匹配的 indexes (提示:索引开始在0
开始计数),请尝试以下操作:
array1.zip(array2).map.with_index { |(a, b), i| i if a != b }
#=> [nil, nil, 2, 3]
尚不清楚OP想要什么,但是如果要求是包含索引的数组,而不是其中一个数组的元素,那么我们想要:
array1 = [1,2,3,4]
array2 = [1,2,4,5]
(0...array1.size).map { |index| index if array1[index] != array2[index] }
#=> [nil, nil, 2, 3]