将数组与索引ruby进行比较

时间:2017-10-02 20:59:43

标签: arrays ruby compare

我试图在ruby中获得两个长度相等的数组之间的差异。

array1 = [1,2,3,4]

array2 = [1,2,4,5]

diffArray = []
diffArray = array1 - array2 # => [3]

但我想保存相对于array1array2出现差异的索引。例如,我希望diffArray保存为

#diffArray => [nil,nil,3,nil]#diffArray => ["","",3,""]

有没有办法在ruby中执行此操作?

2 个答案:

答案 0 :(得分:2)

你的问题不明确。

如果您对值不匹配的位置 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]

如果您对值不匹配的索引感兴趣(提示:索引从0开始计数),请尝试以下操作:

array1.zip(array2).map.with_index { |(a, b), i| i if a != b }
#=> [nil, nil, 2, 3]

答案 1 :(得分:1)

目前还不清楚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]