ruby-on-rails - 获取二维数组之间的差异
问题描述
我在使用二维数组来获取一个数组中存在而另一个数组中不存在的值时遇到了麻烦。
我们有 2 个数组
[["001", 1, 3333, "maja", "eka", 17, "110B"], ["005", 1, 1434, "buve", "eka", 27, "110A"], ["008", 1, 1111, "maja", "", 31, "110"]]
而第二个
[["001", 1, 3333, "maja", "eka", 17, "110B"], ["007", 1, 3381, "buve", "eka", 31, "110"], ["009", 1, 2824, "maja", "", 28, "110C"]]
所以输出应该是
[["007", 1, 3381, "buve", "eka", 31, "110"], ["009", 1, 2824, "maja", "", 28, "110C"]]
Atm 我正在这样做,但我很挣扎,因为它只返回 1 条记录
detect = []
records = first_array.collect {|a| a[0]} - second_array.collect {|a| a[0]}
records.each do |r|
detect = first_array.detect { |k, v| k == r }
end
return detect
解决方案
您可以使用-
运算符
a = [["001", 1, 3333, "maja", "eka", 17, "110B"], ["005", 1, 1434, "buve", "eka", 27, "110A"], ["008", 1, 1111, "maja", "", 31, "110"]]
b = [["001", 1, 3333, "maja", "eka", 17, "110B"], ["007", 1, 3381, "buve", "eka", 31, "110"], ["009", 1, 2824, "maja", "", 28, "110C"]]
# You can find the difference between the arrays with - operator
a - b
#~> [["005", 1, 1434, "buve", "eka", 27, "110A"], ["008", 1, 1111, "maja", "", 31, "110"]]
b - a
#~> [["007", 1, 3381, "buve", "eka", 31, "110"], ["009", 1, 2824, "maja", "", 28, "110C"]]
推荐阅读
- c# - 使用参数的带有 restSharp 的 HTTP 获取请求
- java - 用java涂鸦(鼠标监听器)
- python - FileNotFoundError:[Errno 2] 没有这样的文件或目录:'fluidsynth':'fluidsynth'
- algorithm - 多项式函数的复杂度是什么意思?
- java - 有人还在用Java吗?请问这个可以翻译吗?
- extjs - 如何从按钮单击重定向到另一个视图(ExtJS 6.2)
- javascript - 如何检查变量是否未定义与在javascript中未声明?
- ios - 以编程方式制作圆形按钮
- mysql - MySQL 隔离级别可重复读取和更新中的原子增量
- discord - 尝试为我的 Discord Bot 发出随机命令