亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js數組已經實現深拷貝,但是修改其中一個數組的值,其他數組的值會改變?

js數組已經實現深拷貝,但是修改其中一個數組的值,其他數組的值會改變?

郎朗坤 2019-03-20 15:15:36
_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。
查看完整描述

2 回答

?
蠱毒傳說

TA貢獻1895條經驗 獲得超3個贊

很明顯, 你寫的并非深拷貝
luckness 說的Object.assign也只是解決了更深一層的引用, 如果你child里某個元素還有引用類型的屬性, 這種情況依然會出現。

你這種的可以用JSON.parse(JSON.stringify(res))來實現

需要注意的是, 遇到值是類似function/RegExp這樣的, 或是有循環引用的就不行了


查看完整回答
反對 回復 2019-04-04
  • 2 回答
  • 0 關注
  • 1112 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號