これを追加するのは、私が求めているものが見当たらない人がいるためですが、他の配列と比べて各配列の固有の値を探しています。ハッシュの配列を互いに比較して、両方とも
saved_start
とincoming_start
の違いだけでなく、incoming_start
とsaved_start
の間の違いを見つける必要があります。 saved_start
はdbクエリの結果、incoming_start
はwebhookのparams
の結果です。ここで開始するには、2つの配列です:
saved_start = [{id: "12345", qty: 25}, {id: "678", qty: 20}]
incoming_start = [{id: "12347", qty: 25}, {id: "678", qty: 20}, {id: "abc", qty: 20}]
は、私は配列の違いを見つける:
in_array = incoming_start - saved_start
saved_array = saved_start - incoming_start
上記リターン:
in_array => [{:id=>"12347", :qty=>25}, {:id=>"abc", :qty=>20}]
saved_array => [{:id=>"12345", :qty=>25}]
そしてそれを見つけるためにそれらを反復処理しますin_array
は、id
が12347
であり、abc
であり、saved_array
ではありません。 saved_array
はid
が12345
、in_array
がありません。数量についても同じことが言えます。
これは、in_array
とsaved_array
が同じサイズの場合にうまく機能します。そうでなければ、それは壊れます。ウェル
in_array.each do |incoming|
saved_array.each do |saved|
pp "Does the saved hash have the id #{incoming[:id]}
#{saved.has_value?(incoming[:id])}"
pp "Does the saved hash have the quantity of
#{incoming[:qty]} #{saved.has_value?(incoming[:qty])}"
end
end
上記作品in_array
は以下saved_array
よりも大きいためsaved_array
が小さいので、不良データを返します。英語で
saved_array.each do |saved|
in_array.each do |incoming|
pp "Does the incoming hash have the id #{saved[:id]}
#{incoming.has_value?(saved[:id])}"
pp "Does the incoming hash have the quantity of #{saved[:qty]}
#{incoming.has_value?(saved[:qty])}"
end
end
、私はsaved_start
がincoming_start
と同じデータを含むようにする必要があります。
しかしこれを行うには、saved_start
の中にあるものはではないので、から削除することができます。次に、 'saved_start'に入っているものが 'saved_start'にないので、追加することができます。そして最後にid
が両方にありますが、qty
がincoming_start
で異なる場合は、saved_start
を更新する必要があります。
やれやれ...
おかげ
受け取る予定の結果を投稿してください。 – mudasobwa
更新!質問の一番下の英語をご覧ください。 – ToddT
なぜ 'saved_start = incoming_start'ですか? – Doguita