這篇文章主要介紹JavaScript中數(shù)組怎么克隆,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
站在用戶的角度思考問題,與客戶深入溝通,找到?jīng)錾街菥W(wǎng)站設(shè)計(jì)與涼山州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬主機(jī)、企業(yè)郵箱。業(yè)務(wù)覆蓋涼山州地區(qū)。js主要分基本數(shù)據(jù)類型及引用數(shù)據(jù)類型兩大類
基本數(shù)據(jù)類型包括:number,string,undefine,null,boolean,Symbol(es6新增)
引用數(shù)據(jù)類型:Object,Array,Function,Data等
注意:基本數(shù)據(jù)類型放在**??臻g內(nèi)**,并且是按值存放,可以直接讀取和操作。
引用數(shù)據(jù)類型存放在**堆空間內(nèi)**(門),變量的值其實(shí)是指向堆空間的地址(鑰匙),因此如果克隆這個(gè)變量,相當(dāng)于復(fù)制鑰匙。
let arr = [1,2,3,4,5] let arr1 = arr // 這一步相當(dāng)于把a(bǔ)rr??臻g的地址賦給了arr1,其實(shí)arr和arr1操作的是同一個(gè)堆空間的對(duì)象 arr1.push(6) // arr1 = [1,2,3,4,5,6] console.log(arr) //[1,2,3,4,5,6]
因此對(duì)于引用類型的拷貝,需要拷貝堆空間的對(duì)象
數(shù)組淺拷貝
1.運(yùn)用數(shù)組slice與concat方法返回一個(gè)新數(shù)組的特性
let arr = [1,2,3,4,5] let arr1 = arr.slice() //[1,2,3,4,5] let arr2 = arr.concat() //[1,2,3,4,5]
2.簡(jiǎn)單粗暴的方法-遍歷
let arr = [1,2,3,4,5] let arr2 = [] arr.forEach(item=>{ arr2.push(item) } ) console.log(arr2)
3.es6新增方法-拓展運(yùn)算符
let arr = [1,2,3,4,5] let arr1 = [...arr] //[1,2,3,4,5]
4.es6新增方法-Object.assign
let arr = [1,2,3,4,5]
let arr1 = []
Object.assign(arr1,arr)
console.log(arr1) //[1,2,3.4,5]
如果數(shù)組里嵌套數(shù)組和對(duì)象,淺拷貝只會(huì)拷貝該數(shù)組或者對(duì)象存放在??臻g的地址,因此無論在新舊數(shù)組中改變此地址指向的對(duì)象,兩個(gè)數(shù)組都會(huì)發(fā)生改變。 因此我們需要深拷貝來拷貝此類數(shù)組。
數(shù)組深拷貝
1.普通遍歷,遍歷到引用類型時(shí)候進(jìn)行引用類型的拷貝
let arr = [1,2,3,4,5,{name:'bob'},['a','b']] function clone (arr) { let arr1 = [] arr.forEach(item=>{ //如果不是object,將該值插入到新數(shù)組 if(typeof(item) !== 'object') { arr1.push(item) } else { //根據(jù)遍歷的對(duì)象新建一個(gè)相同類型的空對(duì)象 let obj = item instanceof Array ? [] : {} for(var key in item){ if(item.hasOwnProperty(key)){ obj[key] = item[key] } } arr1.push(obj) } }) return arr1 } let arr1 = clone(arr) arr1[5].name = 'js' console.log(arr,'arr',arr1,'arr1')
2.簡(jiǎn)單粗暴(能拷貝數(shù)組和對(duì)象,但不能拷貝函數(shù))
let arr = [1,2,3,4,5,{name:'bob'},['a','b']] let arr1 = JSON.parse(JSON.stringify(arr))
以上是“JavaScript中數(shù)組怎么克隆”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道!
分享標(biāo)題:JavaScript中數(shù)組怎么克隆-創(chuàng)新互聯(lián)
網(wǎng)頁(yè)鏈接:http://jinyejixie.com/article32/ghesc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、定制網(wǎng)站、網(wǎng)站建設(shè)、微信小程序、小程序開發(fā)、網(wǎng)站排名
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容