javascript - js 物件深拷貝和賦值
扔个三星炸死你
扔个三星炸死你 2017-07-05 11:04:38
0
4
880

程式碼中得到一個陣列arr=[1,2,3];
因為馬上會被銷毀,所以不能直接賦值給物件Obj.a,
請問這種情況jquery如何寫,使得arr銷毀之後Obj.a=[1,2,3]?

扔个三星炸死你
扔个三星炸死你

全部回覆 (4)
仅有的幸福

一般情況下很少會在 JS 中遇到「銷毀」。然後,我不明白你所謂的立即銷毀是指什麼?

如果是指delete arr,那麼直接賦值也不會有問題,如下圖:

如果你是要改變arr的內容。那麼可以複製一個陣列(有幾種方法,concat只是其中一種)

Obj.a = [].concat(arr);

如果確實需要深拷貝,jQuery.fn.clone(),不過貌似有一些限制。

如果其它數據,自己寫深拷貝還是有點難度也比較麻煩,不如用 Lodash 的 cloneDeep()

    Ty80

    拷貝數組:

    利用 slice

    obj.a = arr.slice();

    利用 JSON

    obj.a = JSON.parse( JSON.stringify(arr) );

      巴扎黑

      沒看懂你銷毀的意思。 。 。 。
      至於深拷貝:

      function cloneObj(obj){ if( !obj || typeof obj == "string" ){ return obj; } else if ( obj instanceof Array ){ return [].concat(obj); } else { var tempObj = {}; for( var key in obj ){ tempObj[key] = cloneObj(obj[key]); } return tempObj; } }
        滿天的星座

        如果你使用 ES2015 的話,可以使用物件展開運算子來拷貝。

        obj.a = [...arr]
          最新下載
          更多>
          網站特效
          網站源碼
          網站素材
          前端模板
          關於我們 免責聲明 Sitemap
          PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!