js数组已经实现深拷贝,但是修改其中一个数组的值,其他数组的值会改变?

_createProps: function (props){

    let colProp = [], rowProp = [], propsAry = [], temp = [];


    if (props[0]){

      props[0].childsCurGoods.forEach(function(n,i){

        colProp.push({id:n.id,name:n.name,buyNum:0});

      });

      propsAry = colProp;

      if (props[1]){

            props[1].childsCurGoods.forEach(function (n, i) {

             

              temp[i] = [];

              for (let j = 0; j < colProp.length;j++){

                temp[i].push(colProp[j]);

              }

              rowProp.push({ id: n.id, name: n.name, child: temp[i]})

            });


            propsAry = rowProp;

          }

    }

    return propsAry;

  }```

在小程序某一页面有这么一函数,目的是将一段数据过滤我需要的如下数据格式:

res:[


{

    "id":1,

    "name":"www",

    "child":[

        {

            "id":2,

            "name":"ssss",

            "buyNum":23

        },

        {

            "id":2,

            "name":"ssss",

            "buyNum":23

        },

        {

            "id":2,

            "name":"ssss",

            "buyNum":23

        },

        {

            "id":2,

            "name":"ssss",

            "buyNum":23

        }

    ]

}

]


现在的问题是我一改变其中一个一个对象中的chile的某个值,就会导致其他对象的child发生改变。比如我通过`res[0].child[0].buyNum = 3`,会导致res[0].child[1]、res[0].child[2]...中的buyNum的值都变成3。


郎朗坤
浏览 1136回答 2
2回答

蛊毒传说

很明显, 你写的并非深拷贝luckness&nbsp;说的Object.assign也只是解决了更深一层的引用, 如果你child里某个元素还有引用类型的属性, 这种情况依然会出现。你这种的可以用JSON.parse(JSON.stringify(res))来实现需要注意的是, 遇到值是类似function/RegExp这样的, 或是有循环引用的就不行了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript