成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

javascript的深拷貝方法總結(jié)(主要針對數(shù)組和對象進行整理)

church / 2428人閱讀

摘要:回顧一下我們總結(jié)的常用的深拷貝完整方案實現(xiàn)一個函數(shù),可以對中的種主要的數(shù)據(jù)類型包括進行值復制對數(shù)組深拷貝的簡單方法總結(jié)循環(huán)實現(xiàn)數(shù)組的深拷貝只適應單層數(shù)組結(jié)構(gòu)方法實現(xiàn)數(shù)組的深拷貝只適應單層數(shù)組結(jié)構(gòu)方法實現(xiàn)數(shù)組的深拷貝只適應單層數(shù)組結(jié)構(gòu)擴展

回顧一下我們總結(jié)的常用的深拷貝完整方案

實現(xiàn)一個函數(shù)clone,可以對JavaScript中的5種主要的數(shù)據(jù)類型(包括Number、String、Object、Array、Boolean)進行值復制

 function clone(obj){
        var result;
        switch(typeof obj){
            case "undefined":
            break;
            case "string":
            result = obj+"";
            break;
            case "number":
            result = obj-0;
            break;
            case "boolean":
            result =obj;
            break;
            case "object":
                if(obj ===null){
                    result = null;
                } else {
                    if(Object.prototype.toString.call(obj).slice(8,-1)==="Array"){
                        result=[];
                        for(var i=0;i
對數(shù)組深拷貝的簡單方法總結(jié)

for 循環(huán)實現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5];//只適應單層數(shù)組結(jié)構(gòu)
var arr2 = copyArr(arr)
function copyArr(arr) {
    let res = []
    for (let i = 0; i < arr.length; i++) {
     res.push(arr[i])
    }
    return res
}

slice 方法實現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5] //只適應單層數(shù)組結(jié)構(gòu)
var arr2 = arr.slice(0)
console.log(arr)   //(5) [1, 2, 5, 4, 5]
console.log(arr2)  //(5) [1, 2, 5, 4, 5]

concat 方法實現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5] //只適應單層數(shù)組結(jié)構(gòu)
var arr2 = arr.concat()
console.log(arr)   //(5) [1, 2, 5, 4, 5]
console.log(arr2)  //(5) [1, 2, 5, 4, 5]

ES6擴展運算符實現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5] //只適應單層數(shù)組結(jié)構(gòu)
var [ ...arr2 ] = arr
console.log(arr)   //(5) [1, 2, 5, 4, 5]
console.log(arr2)  //(5) [1, 2, 5, 4, 5]
對象的深拷貝的簡單方法總結(jié)

for循環(huán)實現(xiàn)對象的深拷貝

 //如果包含屬性值是數(shù)組,無法深層拷貝數(shù)組里面的數(shù)據(jù)
var obj = {
  name: "jingjing",
  sex: "girl",
  old: "18"
}
var obj2 = copyObj(obj)
function copyObj(obj) {
  let res = {}
  for (var key in obj) {
    res[key] = obj[key]
  }
  return res
}

轉(zhuǎn)換成json再轉(zhuǎn)換成對象實現(xiàn)對象的深拷貝(對象里面不包含函數(shù)的情況下使用,注意這種直接粗暴的方法只能拷貝json格式數(shù)據(jù)對象,函數(shù)會丟失)

var obj = {
  name: jingjing",
  sex: "girl",
  old: "18"
}
var obj2 = JSON.parse(JSON.stringify(obj))

擴展運算符實現(xiàn)對象的深拷貝(隨著es6的逐漸推廣,此招兒推薦使用)

//如果包含的屬性值是數(shù)組,無法深層拷貝數(shù)組里面的數(shù)據(jù)
var obj = {
  name: "jingjing",
  sex: "girl",
  old: "18"
}
var { ...obj2 } = obj
obj.old = "22"
console.log(obj)  //{name: "jingjing", sex: "girl", old: "22"}
console.log(obj2) //{name: "jingjing", sex: "girl", old: "18"}
項目中常用到的深拷貝方法大概先總結(jié)到這里,有些es6的方法用起來實在是簡潔,高效

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89996.html

相關(guān)文章

  • javascript中的數(shù)據(jù)類型

    摘要:中具有兩種數(shù)據(jù)類型的值,分別是基本類型值和引用類型值。在中,基本類型值指的是簡單的數(shù)據(jù)段,引用類型值指那些可能由多個值構(gòu)成的對象?;緮?shù)據(jù)類型基本數(shù)據(jù)類型未定義的值的默認值尚未存在的對象數(shù)字字符串。 整理以及總結(jié)一下,回溯下基礎(chǔ)。 ECMAScript中具有兩種數(shù)據(jù)類型的值,分別是 基本類型值和引用類型值。 在ECMAScript中,基本類型值指的是簡單的數(shù)據(jù)段,引用類型值指那些可能由...

    2450184176 評論0 收藏0
  • 沒有對象?那就復制一個吧!(科普向,實際應用向)

    摘要:基本數(shù)據(jù)類型將變量和值一起放在棧內(nèi)存引用數(shù)據(jù)類型則將變量放在棧內(nèi)存而將值放在堆內(nèi)存。該怎么理解沒圖我說個假設(shè)有個變量在內(nèi)存中是這樣的棧內(nèi)存中的變量指向堆內(nèi)存中一塊內(nèi)存相當于持有該內(nèi)存的指針,而那塊內(nèi)存中存儲變量的相關(guān)內(nèi)容。 趁著周五沒那么忙,抽個空整理一下最近使用比較頻繁的一個小技術(shù) 對象的深復制。感覺啊,這個標題和今天的節(jié)日(假裝不知道原來是情人節(jié))那么遙相呼應。啊,沒有女朋友?沒有...

    amuqiao 評論0 收藏0
  • js深淺復制

    摘要:總結(jié)綜上所述,數(shù)組的深拷貝比較簡單,方法沒有什么爭議,對象的深拷貝,比較好的方法是用的方法實現(xiàn),或者遞歸實現(xiàn),比較簡單的深復制可以使用實現(xiàn)參考資料知乎中的深拷貝和淺拷貝深入剖析的深復制 深淺復制對比 因為JavaScript存儲對象都是存地址的,所以淺復制會導致 obj 和obj1 指向同一塊內(nèi)存地址。我的理解是,這有點類似數(shù)據(jù)雙向綁定,改變了其中一方的內(nèi)容,都是在原來的內(nèi)存基礎(chǔ)上做...

    Apollo 評論0 收藏0
  • JS 中的深拷貝與淺拷貝

    摘要:什么是深拷貝淺拷貝見名知義,無論是深拷貝還是淺拷貝,都是的問題。使用如下以上就是關(guān)于中的深拷貝與淺拷貝的知識和如何進行深拷貝的知識了,如果有錯或者有其他方式的話,歡迎在下面留言評論啦 前言 最近在寫項目的時候涉及到一些父子組件傳遞個對象或者數(shù)組通信啥的,或者是直接復制添加對象啥的,直接使用賦值的時候總會出錯。一查原來是淺拷貝的問題,就從網(wǎng)上找了點資料,匯總到這里來了。 1 什么是深拷貝...

    ztyzz 評論0 收藏0
  • javascript對深拷貝對象的研坑

    摘要:對于深拷貝,淺拷貝的概念不多說,概念可以自行百度喲這里對深拷貝對象進行一些研究只有值類型數(shù)據(jù)的深拷貝針對只有值的數(shù)據(jù)對象,下面一行代碼足以不嚴謹?shù)暮唵蔚纳羁截愖⒁膺@里問題存在沒有對參數(shù)做檢驗判斷是否對象的邏輯不夠嚴謹沒有考慮數(shù)組的兼容進階深 對于深拷貝,淺拷貝的概念不多說,概念可以自行百度喲!這里對深拷貝對象進行一些研究! 只有值類型數(shù)據(jù)的深拷貝 針對只有值的數(shù)據(jù)對象,下面一行代碼足以...

    caozhijian 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<