私のapp-config.jsファイルから変数にロードして、その状態が変更されないようにするために.slice()でコピーしています。私の嫌悪感の多くは、私がデータを変更するために使用している機能は、突然変異を避けるこの試みを尊重していないようです。 mySensitivityVars
は変化し続けますが、私はちょうどmySeries
に直接的に作用しているので、私はどうしたらよいか分かりません。なぜこれが起こっているのかについてのアイデアはありますか?ここでは、コードがあります:slice()を使用した後に配列が変更されるのはなぜですか?
var mySeries = mySensitivityVars.slice();
//Dummy Processing Algorithm
function myDummyAlgo(sliderIndex, newValue, range) {
console.log(mySeries[sliderIndex].data)
var modifier = newValue/(range/2)
var newSeries = mySensitivityVars[sliderIndex].data.map(function(num){
return num * modifier
})
console.log(newSeries)
// mySeries[sliderIndex].data = newSeries
// console.log(sensitivityChart.series[0].data)
sensitivityChart.series[sliderIndex].setData(newSeries);
};
'.slice'はディープコピーではなく** shallow **コピーを作成します。 –
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice –
@Jonasw:配列内のオブジェクトにはメソッドがあるようですので、これはうまくいかないでしょう。 –