摘要:取當(dāng)前數(shù)值的反碼表示再次取反,也就是得到當(dāng)前自身說明,中的位運算會將數(shù)值自動轉(zhuǎn)換為整數(shù)二轉(zhuǎn)換成再轉(zhuǎn)換成對象實現(xiàn)對象的深拷貝三擴展運算符實現(xiàn)對象的深拷貝數(shù)組去重
數(shù)組的深拷貝:
一.for循環(huán) var arr = [1,2,3,4,5] 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] var arr2 = arr.slice(0) arr[2] = 5 console.log(arr) console.log(arr2) 三.concat 方法實現(xiàn)數(shù)組的深拷貝 var arr = [1,2,3,4,5] var arr2 = arr.concat() arr[2] = 5 console.log(arr) console.log(arr2) 四.ES6擴展運算符 var arr = [1,2,3,4,5] var [ ...arr2 ] = arr arr[2] = 5 console.log(arr) console.log(arr2)
對象的深度拷貝:
一.for循環(huán) var obj = { name: "FungLeo", sex: "man", old: "18" } var obj2 = copyObj(obj) function copyObj(obj) { let res = {} for (var key in obj) { res[key] = obj[key] } return res } var copyObject = function(obj) { var result = {}; for (var x in obj) { result[x] = typeof obj === "object" ? copyObject(obj[x]) : obj[x] //如果拷貝的值仍然是一個對象,那么重復(fù)執(zhí)行當(dāng)前方法。 } return result; } ~~3.14 = > 3; // ~~ 取整。~取當(dāng)前數(shù)值的反碼,~~表示再次取反,也就是得到當(dāng)前自身(說明,JS中的“位”運算會將數(shù)值自動轉(zhuǎn)換為整數(shù)) 二.轉(zhuǎn)換成json再轉(zhuǎn)換成對象實現(xiàn)對象的深拷貝 var obj = { name: "FungLeo", sex: "man", old: "18" } var obj2 = JSON.parse(JSON.stringify(obj)) 三.擴展運算符實現(xiàn)對象的深拷貝 var obj = { name: "FungLeo", sex: "man", old: "18" } var { ...obj2 } = obj obj.old = "22" console.log(obj) console.log(obj2)
數(shù)組去重:
function dedupe(array) { return [...new Set(array)] } var arr = [1,2,2,3,3,4,4,5,5] console.log(dedupe(arr))
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/92051.html
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實JS基礎(chǔ),將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實JS基礎(chǔ),將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實JS基礎(chǔ),將來好去面試官前秀操作...
摘要:中有三種類型的對象拷貝淺拷貝深拷貝延遲拷貝。深拷貝相比于淺拷貝速度較慢并且花銷較大。意思是如果對象引用任何時候都不會被改變,那么沒必要使用深拷貝,只需要使用淺拷貝就行了。 目錄介紹 01.對象拷貝有哪些 02.理解淺拷貝 2.1 什么是淺拷貝 2.2 實現(xiàn)淺拷貝案例 03.理解深拷貝 3.1 什么是深拷貝 3.2 實現(xiàn)深拷貝案例 04.序列化進行拷貝 4.1 序列...
摘要:在之前的文章專題之?dāng)?shù)據(jù)類型和類型檢測中我有講過,中的數(shù)據(jù)類型分為兩種,基本數(shù)據(jù)類型和引用數(shù)據(jù)類型,基本數(shù)據(jù)類型是保存在棧的數(shù)據(jù)結(jié)構(gòu)中的是按值訪問,所以不存在深淺拷貝問題。 前言 在開發(fā)過程中,偶爾會遇到這種場景,拿到一個數(shù)據(jù)后,你打算對它進行處理,但是你又希望拷貝一份副本出來,方便數(shù)據(jù)對比和以后恢復(fù)數(shù)據(jù)。 那么這就涉及到了 JS 中對數(shù)據(jù)的深淺拷貝問題,所謂深淺拷貝,淺拷貝的意思就是,...
摘要:淺拷貝與深拷貝一數(shù)據(jù)類型數(shù)據(jù)分為基本數(shù)據(jù)類型,和對象數(shù)據(jù)類型。淺拷貝是按位拷貝對象,它會創(chuàng)建一個新對象,這個對象有著原始對象屬性值的一份精確拷貝。對于字符串?dāng)?shù)字及布爾值來說不是或者對象,會拷貝這些值到新的數(shù)組里。 淺拷貝與深拷貝 一、數(shù)據(jù)類型數(shù)據(jù)分為基本數(shù)據(jù)類型(String, Number, Boolean, Null, Undefined,Symbol)和對象數(shù)據(jù)類型。 基本數(shù)據(jù)類...
閱讀 3207·2021-11-19 09:40
閱讀 3005·2021-09-09 09:32
閱讀 792·2021-09-02 09:55
閱讀 1393·2019-08-26 13:23
閱讀 2403·2019-08-26 11:46
閱讀 1229·2019-08-26 10:19
閱讀 2054·2019-08-23 16:53
閱讀 1072·2019-08-23 12:44