gpt4 book ai didi

ruby-on-rails - 无论顺序如何,是否有可能从两个动态数组中获得差异?

转载 作者:数据小太阳 更新时间:2023-10-29 07:48:03 26 4
gpt4 key购买 nike

如果我有两个数组,我试着找出它们的不同点..

[1, 2, 3, 2, 6, 7] - [2, 1]

我明白了:

[3, 6, 7]

但是如果我翻转这些数组

[2, 1] - [1, 2, 3, 2, 6, 7]

我明白了:

[]

我的问题是,由于我的两个数组是动态的,我需要知道两个数组之间是否存在差异,而不管它们的顺序如何。找到它的最简单表达式是什么?

最佳答案

你可以定义它:

class Array
def diff(o)
(o - self) + (self - o) # alternatively: (o + self) - (o & self)
end
end

[2, 1].diff [1, 2, 3, 2, 6, 7] # [3, 6, 7]
[1, 2, 3, 2, 6, 7].diff [2, 1] # [3, 6, 7]
[2, 3, 3, 1].diff [2, 4, 5] # [4, 5, 3, 3, 1]
[2, 4, 5].diff [2, 3, 3, 1] # [3, 3, 1, 4, 5]

不过,正如上面的后两个示例所示,正确答案可能取决于您最终想要什么。

如果您只想要唯一值,您需要先将两个输入转换为集合,然后将结果作为数组返回:

class Array
def diff(o)
(o.to_set ^ to_set).to_a # or simply (o.to_set ^ self).to_a
end
end

[2, 4, 5].diff [2, 3, 3, 1] # [4, 5, 3, 1]

(也可能有内置的 Rails 方法。)

关于ruby-on-rails - 无论顺序如何,是否有可能从两个动态数组中获得差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656191/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com