javascript - 为什么我的数组在使用 slice() 后被改变了?

标签 javascript arrays immutability

我正在从我的 app-config.js 文件中加载一个变量,然后使用 .slice() 复制它以试图防止其状态发生变化。令我很懊恼的是,我用来更改数据的函数似乎没有尊重这种避免突变的尝试。 mySensitivityVars 不断变化,但我不太确定如何变化,因为我只是直接作用于 mySeries。关于为什么会发生这种情况的任何想法?这是代码:

    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 可以复制数组,但不会复制数组中引用的任何对象(仅复制引用)

关于javascript - 为什么我的数组在使用 slice() 后被改变了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47104313/

相关文章:

c - 在c中用循环和数组反转字符串

java - 是否可以将数组中的索引与颜色进行比较?

Swift 可变字典被视为不可变

rust - 我想将HashSet [0]的元素移动到HashSet [1],错误[E0502] : cannot borrow `hsets` as mutable because it is also borrowed as immutable

javascript - 此 Javascript 片段的 W3C 验证错误

javascript - JS 如何将序列化对象转换为数组?

javascript - JQuery 滚动()太慢

c++ - 尝试递归地获取数组元素的总和

groovy - 有没有办法让 @Builder 注释适用于不可变类?

javascript - jQuery:打印数组中一组重复对象中的第一个对象