奇怪的行为设置数组

时间:2013-06-24 08:39:44

标签: javascript arrays

因此,考虑到以下代码,我的预期行为将是

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
设置选项[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通过上面的代码维持新的最小值。

1 个答案:

答案 0 :(得分:0)

在javascript中,所有非原始值默认通过引用传递,因此您应该查看构建选项和图表数组的位置,如果您想要硬拷贝非原始类型,请使用Array slice method阵列。