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

資訊專欄INFORMATION COLUMN

javascript實(shí)現(xiàn)數(shù)組或?qū)ο蟮纳羁截?

Fundebug / 2141人閱讀

摘要:實(shí)現(xiàn)深拷貝有兩種方法第一簡(jiǎn)單粗暴可以看出來(lái),改變?cè)瓟?shù)組,并沒(méi)有對(duì)新數(shù)組產(chǎn)生影響改變新數(shù)組也沒(méi)有對(duì)原數(shù)組產(chǎn)生影響第二面試官大多數(shù)會(huì)問(wèn)這種方法判斷是數(shù)組還是對(duì)象判斷是值類型還是引用類型引用類型的話進(jìn)行遞歸操作值類型直接賦值同樣改變?cè)瓟?shù)組,并沒(méi)有

js實(shí)現(xiàn)深拷貝有兩種方法

第一(簡(jiǎn)單粗暴):

let arr = [1, {a: 2}];
let copyArr = JSON.parse( JSON.stringify(arr) );
console.log(copyArr )  // [1, {a: 2}]
arr[1].a = 3;
console.log(copyArr )  // [1, {a: 2}]
copyArr[1].a = 5;
console.log(arr)       // [1, {a: 2}]

可以看出來(lái),改變?cè)瓟?shù)組arr,并沒(méi)有對(duì)新數(shù)組copyArr產(chǎn)生影響;改變新數(shù)組copyArr也沒(méi)有對(duì)原數(shù)組arr產(chǎn)生影響;

第二(面試官大多數(shù)會(huì)問(wèn)這種方法):

let arr = [1, {a: 2}];

function deepCopy(arr) {
    let copyArr = (arr.constructor === Array) ? [] : {}; // 判斷是數(shù)組還是對(duì)象
    for(let i in arr) {
        if(typeof arr[i] === "object") {   // 判斷是值類型還是引用類型
            copyArr[i] = deepCopy(arr[i]);  // 引用類型的話進(jìn)行遞歸操作
        } else {
            copyArr[i] = arr[i];  // 值類型直接賦值
        }
    }
    return copyArr;
}

let copyArr = deepCopy(arr);
console.log(copyArr )  // [1, {a: 2}]
arr[1].a = 3;
console.log(copyArr )  // [1, {a: 2}]
copyArr[1].a = 5;
console.log(arr)       // [1, {a: 2}]

同樣:改變?cè)瓟?shù)組arr,并沒(méi)有對(duì)新數(shù)組copyArr產(chǎn)生影響;改變新數(shù)組copyArr也沒(méi)有對(duì)原數(shù)組arr產(chǎn)生影響;

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

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

相關(guān)文章

  • javascript對(duì)象的淺拷貝、深拷貝和Object.assign方法淺析

    摘要:對(duì)象的淺拷貝淺拷貝是對(duì)象共用一個(gè)內(nèi)存地址,對(duì)象的變化相互影響。這是特別值得注意的地方。和能正確處理的對(duì)象只有等能夠被表示的數(shù)據(jù)結(jié)構(gòu),因此函數(shù)這種不能被表示的類型將不能被正確處理。 對(duì)象的淺拷貝: 淺拷貝是對(duì)象共用一個(gè)內(nèi)存地址,對(duì)象的變化相互影響。比如常見的賦值引用就是淺拷貝: let srcObj = {name: lilei, age: 20}; let copyObj = srcO...

    lixiang 評(píng)論0 收藏0
  • 低門檻徹底理解JavaScript的深拷貝和淺拷貝

    摘要:案例中的賦值就是典型的淺拷貝,并且深拷貝與淺拷貝的概念只存在于引用類型。修改修改經(jīng)測(cè)試,也只能實(shí)現(xiàn)一維對(duì)象的深拷貝。經(jīng)過(guò)驗(yàn)證,我們發(fā)現(xiàn)提供的自有方法并不能徹底解決的深拷貝問(wèn)題。 在說(shuō)深拷貝與淺拷貝前,我們先看兩個(gè)簡(jiǎn)單的案例: //案例1 var num1 = 1, num2 = num1; console.log(num1) //1 console.log(num2) //1 num...

    wind3110991 評(píng)論0 收藏0
  • javascript的深拷貝方法總結(jié)(主要針對(duì)數(shù)組對(duì)象進(jìn)行整理)

    摘要:回顧一下我們總結(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、Ob...

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

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

    ztyzz 評(píng)論0 收藏0
  • javascript的深拷貝VS淺拷貝

    摘要:深拷貝淺拷貝本文主要對(duì)深拷貝淺拷貝的解釋及實(shí)現(xiàn)做一下簡(jiǎn)單記錄。之所以會(huì)有深拷貝與淺拷貝之分,是因?yàn)椴煌瑪?shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的存儲(chǔ)區(qū)域不一樣。但注意,只能做一層屬性的淺拷貝。 深拷貝VS淺拷貝 本文主要對(duì)深拷貝&淺拷貝的解釋及實(shí)現(xiàn)做一下簡(jiǎn)單記錄。原文鏈接,歡迎star。 之所以會(huì)有深拷貝與淺拷貝之分,是因?yàn)椴煌瑪?shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的存儲(chǔ)區(qū)域不一樣。 堆和棧是計(jì)算機(jī)中劃分出來(lái)用來(lái)存儲(chǔ)的...

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

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

0條評(píng)論

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