問題タブ [object-notation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Async + forEach ループを使用した JavaScript オブジェクト - 値の割り当てに関する問題
ここでの目標は、ゲーム内の各ユーザーのキーを持つ「tallys」オブジェクトを作成することです。これらのユーザー キーに割り当てられる値は、ゲームで獲得した毎週のドルの値を表す配列です。まず、ゲーム内の各ユーザーに長さ 26 の配列 (ゲーム内の 26 週間を表す) を割り当てます。26 個の値は「0」で、各週の $0 値を表します。次のコードを使用して開始します。
...結果は次のようなオブジェクトになります。
次に、少し for ループを実行して、各ユーザーの週ごとの合計を計算します... ここでは変数 'j' を 1 週目から開始し、次のように、ゲームが実行されている週と同じ数のループを実行します。
この時点ではまだ調子が良いです。これにより、これまでにゲームで行われた 2 週間の 2 つの異なる「合計」配列が得られました。
ここで物事が乱雑になります。前の関数を変更して、各週の「sums」配列で forEach を実行し、「tallys」オブジェクトを変更して、各ユーザーに適切なドル値で各週に割り当てられた配列位置を変更するように設計しました。(また、ここの 'j-1' が紛らわしく見えないようにします。これは、配列の最初の位置ではなく 0 の位置に 1 のゲーム週を割り当てたいためです):
したがって、ここで期待するのは、次のような結果になることです。
... 各ユーザーに適切な値を設定します。でも!これは、すべてのループなどが終了すると、集計オブジェクトとして最終的に得られるものです。
....などですが、すべてのユーザー向けです。すべてのユーザーにまったく同じ値を何度も割り当てています。ループした最後の「d」値だったという理由だけで、すべてのユーザーが -4.27 と -1.41 になります。
コードにtallys[weekSum.username]があるときに、すべてのユーザー名を最後の関連値で更新するのはなぜですか?
助けてくれてありがとう!
編集:皆様のご協力に改めて感謝いたします。コメントでの@Bergiの答えは正しいです。彼が提案するように「タリー」を作成する最初のコードを編集すると、すべてが正常に機能します。最初の「週」配列を複製するという提案された回答としてマークした@vothanhdatのアプローチも問題を解決します。
javascript - オブジェクト プロパティを更新すると、そのオブジェクト内の他のすべての同じプロパティが更新されます
これは私を際限なく混乱させます。別の関数によって提供される変数に基づいてオブジェクト プロパティを動的に更新しようとしていますが、プロパティを更新すると、親オブジェクトの同じネストされたプロパティがすべて更新されます。
私が遭遇する問題は、結果を使用して topItems.{property}.itemBreakdown[outcome] の MetricValue オブジェクトにアクセスすると、TopContributing オブジェクトのすべてのオブジェクトでそのプロパティ (アイテムまたはカウント) が更新されることです。たとえば、topItems.one で「outstanding」という結果を更新しようとすると、同じ値が topItems.two、three などに追加されます。何が起こっているのでしょうか? なぜこれが起こるのか分かりません。どんな助けでも素晴らしいでしょう!
python - この Python デザイン パターンはどのように呼ばれますか?
ffmpeg-python ドキュメントでは、例として次のデザイン パターンを使用しました。
この設計パターンはどのように呼ばれていますか? 詳細情報はどこにありますか? また、その長所と短所は何ですか?