国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

church / 2430人閱讀

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

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

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

 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
對(duì)數(shù)組深拷貝的簡(jiǎn)單方法總結(jié)

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

var arr = [1,2,3,4,5];//只適應(yīng)單層數(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 方法實(shí)現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5] //只適應(yīng)單層數(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 方法實(shí)現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5] //只適應(yīng)單層數(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擴(kuò)展運(yùn)算符實(shí)現(xiàn)數(shù)組的深拷貝

var arr = [1,2,3,4,5] //只適應(yīng)單層數(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]
對(duì)象的深拷貝的簡(jiǎn)單方法總結(jié)

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

 //如果包含屬性值是數(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)換成對(duì)象實(shí)現(xiàn)對(duì)象的深拷貝(對(duì)象里面不包含函數(shù)的情況下使用,注意這種直接粗暴的方法只能拷貝json格式數(shù)據(jù)對(duì)象,函數(shù)會(huì)丟失)

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

擴(kuò)展運(yùn)算符實(shí)現(xiàn)對(duì)象的深拷貝(隨著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"}
項(xiàng)目中常用到的深拷貝方法大概先總結(jié)到這里,有些es6的方法用起來實(shí)在是簡(jiǎn)潔,高效

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/89996.html

相關(guān)文章

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

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

    2450184176 評(píng)論0 收藏0
  • 沒有對(duì)象?那就復(fù)制一個(gè)吧!(科普向,實(shí)際應(yīng)用向)

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

    amuqiao 評(píng)論0 收藏0
  • js深淺復(fù)制

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

    Apollo 評(píng)論0 收藏0
  • JS 中的深拷貝與淺拷貝

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

    ztyzz 評(píng)論0 收藏0
  • javascript對(duì)深拷貝對(duì)象的研坑

    摘要:對(duì)于深拷貝,淺拷貝的概念不多說,概念可以自行百度喲這里對(duì)深拷貝對(duì)象進(jìn)行一些研究只有值類型數(shù)據(jù)的深拷貝針對(duì)只有值的數(shù)據(jù)對(duì)象,下面一行代碼足以不嚴(yán)謹(jǐn)?shù)暮?jiǎn)單的深拷貝注意這里問題存在沒有對(duì)參數(shù)做檢驗(yàn)判斷是否對(duì)象的邏輯不夠嚴(yán)謹(jǐn)沒有考慮數(shù)組的兼容進(jìn)階深 對(duì)于深拷貝,淺拷貝的概念不多說,概念可以自行百度喲!這里對(duì)深拷貝對(duì)象進(jìn)行一些研究! 只有值類型數(shù)據(jù)的深拷貝 針對(duì)只有值的數(shù)據(jù)對(duì)象,下面一行代碼足以...

    caozhijian 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<