ruby 2.4.1p111 (2017-03-22 revision 58053) [x64-mingw32]
windows7サービスパック1でrubyを使っています。
order_data = [
[number,product_id,order_id,time,....],
[number,product_id,order_id,time,....],
[number,product_id,order_id,time,....],
[number,product_id,order_id,time,....]
]
このような配列データを用いて、データの修正をしているのですが、
order_idが重複し、product_idだけが異なるデータがあります。
たとえば、order_dataの 0と1の order_idが重複していたとします。
このデータに対し、
order_data[0][2] = modified_data
とすると、
なぜか
order_data[1][2]も同じ値になってしまいます。
検証のために、他の命令文を極力なくし、order_data[0][2] = modified_data
のみにしても同じです。
Rubyにバグがあるとしか思えないのですが、何か心あたりがある方はご指摘いただけると助かります。
result =[] delegate_data.each do |d| next if d == nil id = d[1] flag = false ref_data.each do |ref| if id == ref[4] ref[1] = d[0] flag = true #### p ref #### no.1 result << ref #### p result #### no.2 break end end delegate_error << if flag == false end
質問の本文は例としてorder_dataを用いましたがそれは無視していただいて、
実際に書いたコードは上記です。
delegate_dataのデータの並びを
ref_dataと比較し、同じデータ(order_id)があれば一部を置き換えてデータを作成すると言った具合です。
ちなみに、エラーを検証した時にコメントアウトした行を見ると
no.1
ここで表示したものは思惑通りになっています
no.2
ここで表示したものは重複がなければ問題なし。
重複したデータがあると、重複したデータを持つ一番最後のデータに、
重複したデータを持つ全てのものが同じ値になってしまいます。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。