我有一個陣列陣列,其中也包含 hash value ,并且該陣列具有我想要洗掉的重復陣列。下面有一個例子:
[[“John, Doe“, "/manager/consumer/123456?status=1", {:data=>{:id=>123456}, :class=>""}],
[“Jane, smith“, "/manager/consumer/7891011?status=1", {:data=>{:id=>7891011}, :class=>""}],
[“William, Smith”, "/manager/consumer/12131415?status=1", {:data=>{:id=>1211415}, :class=>""}],
[“John, Doe“, "/manager/consumer/123456?status=1", {:data=>{:id=>123456}, :class=>""}]]
正如我們所看到的,有兩個相同的陣列(第一個和最后一個),我想根據陣列內散列中存在的 :id 洗掉重復的陣列?
uj5u.com熱心網友回復:
使用uniq方法!(紅寶石 >= 1.9.2)
array = [
["John, Doe", "/manager/consumer/123456?status=1", {:data=>{:id=>123456}, :class=>""}],
["Jane, smith", "/manager/consumer/7891011?status=1", {:data=>{:id=>7891011}, :class=>""}],
["William, Smith", "/manager/consumer/12131415?status=1", {:data=>{:id=>1211415}, :class=>""}],
["John, Doe", "/manager/consumer/123456?status=1", {:data=>{:id=>123456}, :class=>""}]
]
array.uniq { |_name, _url, hash| hash[:data][:id] }
如果 id 重復,它將洗掉除第一個條目之外的所有條目,因此您需要考慮 id 相同但其余資料不同的情況。
注意:如果您出于某種原因在 1.9.2 之前的 ruby?? 上運行,那么uniq將忽略該塊。出于這個原因,ActiveSupport 有uniq_by方法(在 4.0.2 版中被洗掉)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/404410.html
標籤:
