[英]Compare values from multiple hashes within an array
我知道應該避免for循環,我想遍歷數組的更好方法是
for i in 0..array.size-1 do
puts array[i]
end
做
array.each{ |x|
puts x
}
但是如果我有一系列的哈希
array = [{:value0 => 1, :value1 => 0}, {:value0 => 2, :value1 => 1}, {:value0 => 1, :value1 => 2}]
並想檢查:value0在所有哈希中是否唯一..直觀上我會做類似的事情
for i in 0..array.size-1 do
_value_buffer = array[i][:value0]
for j in i+1..array.size-1 do
if _value_buffer == array[j][:value0]
puts "whatever"
end
end
end
有一個更好的方法嗎?
就像安德魯·馬歇爾(Andrew Marshall)所說的那樣,您可以使用uniq !,但使用的方法更為簡潔:
!array.uniq!{|a| a[:value0]}
這是我的方法:
2.0.0p195 :001 > array = [{:value0 => 1, :value2 => 0}, {:value0 => 2, :value2 => 1}, {:value0 => 1, :value2 => 2}]
=> [{:value0=>1, :value2=>0}, {:value0=>2, :value2=>1}, {:value0=>1, :value2=>2}]
2.0.0p195 :002 > val0 = array.map { |hash| hash[:value0] }
=> [1, 2, 1]
2.0.0p195 :003 > puts val0.uniq == val0
false
=> nil
我將收集:value0
的值,然后將它們與唯一值數組進行比較。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.