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
设置 options[chart_number]['yaxes'][0]['min'] 等于另一个值,在这种情况下 0
输出与第 1 行预期的值相同的值:1356.6

相反,我对第三行的输出是 0,这让我相信之前的行负责更改此数组的值。

任何人都知道为什么将选项的子值设置为等于来自不同数组的值也会更改源数组?

更新:

将其更改为

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 移动到第二个图表,图表 1 通过上面的代码维护新的最小值集。

4

1 回答 1

0

In javascript, all non-primitive values are by default passed by reference, so you should look where you build options and charts array, use the Array slice method if possible if you want to hard copy non-primitive types like arrays.

于 2013-06-24T08:43:33.570 回答