0

したがって、次のコードを考えると、私の予想される動作は次のようになります

console.log(charts[i-1]['yaxes'][0]['min']);        
options[chart_number]['yaxes'][0]['min'] = charts[i]['yaxes'][0]['min'];
console.log(charts[i-1]['yaxes'][0]['min']);

この場合、いくつかの値を出力します: 1356.6
set options[chart_number]['yaxes'][0]['min'] を別の値に等しくします。この場合、0
行 1 で期待されるのと同じ値を出力します: 1356.6

代わりに、3 行目の出力は 0 であり、前の行がこの配列値の変更に関与していると思われます。

options のサブ値を別の配列の値と等しく設定すると、ソース配列も変更される理由を知っている人はいますか?

アップデート:

それをに変更する

console.log(charts[i-1]['yaxes'][0]['min']);        
options[chart_number]['yaxes'][0]['min'] = charts[i]['yaxes'].slice(0)[0]['min'];
console.log(charts[i-1]['yaxes'][0]['min']);

まったく役に立たなかったようです。私のコードベースはおそらく長すぎてここに貼り付けることができず、おそらくしばらく掘り下げて私を助ける必要がありますが、探索の潜在的な手段である場合は提案に感謝します.

更新 2:
問題全体のデモ: http://jsfiddle.net/SxW3X/

「失業」などのデータセットを追加し、RSI をヒットし、RSI を 2 番目のチャートに移動します。チャート 1 は、上記のコードを使用して新しい最小セットを維持します。

4

1 に答える 1

0

JavaScript では、すべての非プリミティブ値はデフォルトで参照によって渡されるため、オプションとチャート配列を構築する場所を確認する必要があります。配列などの非プリミティブ型をハード コピーする場合は、可能であればArray スライス メソッドを使用してください。

于 2013-06-24T08:43:33.570 に答える