簡體   English   中英

Ruby:我有兩個哈希數組,如何計算兩個哈希中具有相同ID的元素?

[英]Ruby: I have two arrays of hashes, how do I count elements with the same id in both hashes?

我在Ruby中有兩個哈希數組

[{id: 1, a:2, b:3, c:4},{id:2, a:8, b:10, c:12}]
[{id: 1, a:3, b:8, c:9},{id:2, a:8, b:18, c:20},{id:3, a:10, b:15, c:29}]

我想找出多少對元素(每個數組一個)具有相同的ID和相同的a,在這種情況下,它只有一個(ID為2和a的元素為8)

有沒有一種有效的方法來計算?

提前致謝

a1 = [{id: 1, a:2, b:3, c:4},{id:2, a:8, b:10, c:12}]
a2 = [{id: 1, a:3, b:8, c:9},{id:2, a:8, b:18, c:20},{id:3, a:10, b:15, c:29}]

(a1.map{|h| [h[:id], h[:a]]} & a2.map{|h| [h[:id], h[:a]]}).length
# => 1

一個很容易擴展比較屬性的變體:

x = [{id: 1, a:2, b:3, c:4},{id:2, a:8, b:10, c:12}]
y = [{id: 1, a:3, b:8, c:9},{id:2, a:8, b:18, c:20},{id:3, a:10, b:15, c:29}]

x.product(y).count { |p| [:id,:a].all? { |k| p[0][k]==p[1][k] } }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM