亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

js之?dāng)?shù)組克隆

xiaochao / 3323人閱讀

摘要:主要分基本數(shù)據(jù)類型及引用數(shù)據(jù)類型兩大類基本數(shù)據(jù)類型包括,新增引用數(shù)據(jù)類型等注意基本數(shù)據(jù)類型放在??臻g內(nèi),并且是按值存放,可以直接讀取和操作。

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ì)象存放在棧空間的地,因此無(wú)論在新舊數(shù)組中改變此地址指向的對(duì)象,兩個(gè)數(shù)組都會(huì)發(fā)生改變。 因此我們需要深拷貝來(lái)拷貝此類數(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))

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

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

相關(guān)文章

  • 前端一些需要掌握的簡(jiǎn)單知識(shí)點(diǎn)

    摘要:快速排序由在年提出。如果定時(shí)器的時(shí)間到了,那么也會(huì)去下一個(gè)階段關(guān)閉的回調(diào)函數(shù),一些準(zhǔn)備關(guān)閉的函數(shù)等的事件輪詢機(jī)制也可以看成是單線程,由上往下執(zhí)行,但是到了第階段,又會(huì)返回第一階段,死循環(huán)。 原生javaScript是中大公司挑人的核心,也是決定你未來(lái)發(fā)展高度的核心。 冒泡排序,快速排序,深度克隆,深度凍結(jié),數(shù)組操作,本章都有。 走遍大江南北,還是原生javaScript最美 感冒給大...

    n7then 評(píng)論0 收藏0
  • 前端一些需要掌握的簡(jiǎn)單知識(shí)點(diǎn)

    摘要:快速排序由在年提出。如果定時(shí)器的時(shí)間到了,那么也會(huì)去下一個(gè)階段關(guān)閉的回調(diào)函數(shù),一些準(zhǔn)備關(guān)閉的函數(shù)等的事件輪詢機(jī)制也可以看成是單線程,由上往下執(zhí)行,但是到了第階段,又會(huì)返回第一階段,死循環(huán)。 原生javaScript是中大公司挑人的核心,也是決定你未來(lái)發(fā)展高度的核心。 冒泡排序,快速排序,深度克隆,深度凍結(jié),數(shù)組操作,本章都有。 走遍大江南北,還是原生javaScript最美 感冒給大...

    liuhh 評(píng)論0 收藏0
  • 設(shè)計(jì)模式原型模式

    摘要:但是這種復(fù)制技術(shù)在的世界里早已出現(xiàn),就是原型模式什么是原型模式用原型實(shí)例指定創(chuàng)建對(duì)象的種類,并且通過(guò)拷貝這些原型創(chuàng)建新的對(duì)象類圖原型模式是設(shè)計(jì)模式中最簡(jiǎn)單的,沒(méi)有之一。 前言 在現(xiàn)實(shí)世界中,我們通常會(huì)感覺到分身乏術(shù)。要是自己有分身那該多好啊,一個(gè)用來(lái)工作,一個(gè)用來(lái)看電視,一個(gè)用來(lái)玩游戲(無(wú)意中透露了自己?jiǎn)紊砉返纳矸?。-),其實(shí)就是克隆,這種技術(shù)存在著很大的弊端,所以現(xiàn)在是禁止使用的。...

    jsyzchen 評(píng)論0 收藏0
  • ES6時(shí)代,你真的會(huì)克隆對(duì)象嗎(二)

    摘要:多個(gè)窗口意味著多個(gè)全局環(huán)境,不同的全局環(huán)境擁有不同的全局對(duì)象,從而擁有不同的內(nèi)置類型構(gòu)造函數(shù)。比如,表達(dá)式會(huì)返回,因?yàn)閷傩缘玫降膬H僅是構(gòu)造函數(shù),而且是可以被手動(dòng)更改的,只是返回的構(gòu)造函數(shù)的名字,它并不返回類名。 原文:ES6時(shí)代,你真的會(huì)克隆對(duì)象嗎(二) 上一篇,我們從Symbol和是否可枚舉以及屬性描述符的角度分析了ES6下怎么淺拷貝一個(gè)對(duì)象,發(fā)表在掘金和segmentfault上(...

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

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

0條評(píng)論

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