JavaScript中数组克隆的方法介绍(附代码)


本文摘自PHP中文网,作者不言,侵删。

本篇文章给大家带来的内容是关于JavaScript中数组克隆的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

js主要分基本数据类型引用数据类型两大类

基本数据类型包括:number,string,undefine,null,boolean,Symbol(es6新增)
引用数据类型:Object,Array,Function,Data等
注意:基本数据类型放在**栈空间内**,并且是按值存放,可以直接读取和操作。
引用数据类型存放在**堆空间内**(门),变量的值其实是指向堆空间的地址(钥匙),因此如果克隆这个变量,相当于复制钥匙。

1

2

3

4

let arr = [1,2,3,4,5]

let arr1 = arr  // 这一步相当于把arr栈空间的地址赋给了arr1,其实arr和arr1操作的是同一个堆空间的对象

arr1.push(6) // arr1 = [1,2,3,4,5,6]

console.log(arr) //[1,2,3,4,5,6]

因此对于引用类型的拷贝,需要拷贝堆空间的对象

数组浅拷贝
1.运用数组slice与concat方法返回一个新数组的特性

1

2

3

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.简单粗暴的方法-遍历

1

2

3

4

5

6

7

let arr = [1,2,3,4,5]

let arr2 = []

arr.forEach(item=>{

    arr2.push(item)

    }

)

console.log(arr2)

3.es6新增方法-拓展运算符

1

2

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]

如果数组里嵌套数组和对象,浅拷贝只会拷贝该数组或者对象存放在栈空间的地,因此无论在新旧数组中改变此地址指向的对象,两个数组都会发生改变。 因此我们需要深拷贝来拷贝此类数组。

数组深拷贝
1.普通遍历,遍历到引用类型时候进行引用类型的拷贝

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

let arr = [1,2,3,4,5,{name:'bob'},['a','b']]

      function clone (arr) {

        let arr1 = []

        arr.forEach(item=>{

        //如果不是object,将该值插入到新数组

          if(typeof(item) !== 'object') {

            arr1.push(item)

          } else {

          //根据遍历的对象新建一个相同类型的空对象

            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.简单粗暴(能拷贝数组和对象,但不能拷贝函数)

1

2

let arr = [1,2,3,4,5,{name:'bob'},['a','b']]

let arr1 = JSON.parse(JSON.stringify(arr))

本篇文章到这里就已经全部结束了,更多其他精彩内容可以关注PHP中文网的JavaScript教程视频栏目!

以上就是JavaScript中数组克隆的方法介绍(附代码)的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

javascript的mvc框架有哪些

javascript怎么设置不可编辑

javascript中input怎么用

通过javascript函数生成字符串的所有排列组合

javascript中如何使用spread运算符(...)?8种方法介绍

详解javascript之作用域

react和javascript有什么关系

javascript怎么将摄氏度转华氏度

javascript能做什么?

html5之javascript多线程的详解

更多相关阅读请进入《ES6》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...