资讯专栏INFORMATION COLUMN

拷贝

eccozhou / 920人阅读

摘要:取当前数值的反码表示再次取反,也就是得到当前自身说明,中的位运算会将数值自动转换为整数二转换成再转换成对象实现对象的深拷贝三扩展运算符实现对象的深拷贝数组去重

数组的深拷贝:

一.for循环
            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 方法实现数组的深拷贝
            var arr = [1,2,3,4,5]
        var arr2 = arr.slice(0)
        arr[2] = 5
        console.log(arr)
        console.log(arr2)
三.concat 方法实现数组的深拷贝
            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循环
    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]
            //如果拷贝的值仍然是一个对象,那么重复执行当前方法。
        }  
        return result;
    }
    ~~3.14 = > 3;
    // ~~ 取整。~取当前数值的反码,~~表示再次取反,也就是得到当前自身(说明,JS中的“位”运算会将数值自动转换为整数)
二.转换成json再转换成对象实现对象的深拷贝
    var obj = {
      name: "FungLeo",
      sex: "man",
      old: "18"
    }
    var obj2 = JSON.parse(JSON.stringify(obj))
三.扩展运算符实现对象的深拷贝
    var obj = {
      name: "FungLeo",
      sex: "man",
      old: "18"
    }
    var { ...obj2 } = obj
    obj.old = "22"
    console.log(obj)
    console.log(obj2)

数组去重:

function dedupe(array) {
  return [...new Set(array)]
}
var arr = [1,2,2,3,3,4,4,5,5]
console.log(dedupe(arr))

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/92051.html

相关文章

  • 一篇文章彻底说清JS的深拷贝/浅拷贝

    摘要:一篇文章彻底说清的深拷贝浅拷贝这篇文章的受众第一类业务需要急需知道如何深拷贝对象的开发者。这篇文章分享的目的更多还是希望用一篇文章整理清楚深浅拷贝的含义递归实现思路以及小伙伴们如果使用了这种黑科技一定要清楚这样写的优缺点。 一篇文章彻底说清JS的深拷贝and浅拷贝 这篇文章的受众 第一类,业务需要,急需知道如何深拷贝JS对象的开发者。 第二类,希望扎实JS基础,将来好去面试官前秀操作...

    J4ck_Chan 评论0 收藏0
  • 一篇文章彻底说清JS的深拷贝/浅拷贝

    摘要:一篇文章彻底说清的深拷贝浅拷贝这篇文章的受众第一类业务需要急需知道如何深拷贝对象的开发者。这篇文章分享的目的更多还是希望用一篇文章整理清楚深浅拷贝的含义递归实现思路以及小伙伴们如果使用了这种黑科技一定要清楚这样写的优缺点。 一篇文章彻底说清JS的深拷贝and浅拷贝 这篇文章的受众 第一类,业务需要,急需知道如何深拷贝JS对象的开发者。 第二类,希望扎实JS基础,将来好去面试官前秀操作...

    lakeside 评论0 收藏0
  • 一篇文章彻底说清JS的深拷贝/浅拷贝

    摘要:一篇文章彻底说清的深拷贝浅拷贝这篇文章的受众第一类业务需要急需知道如何深拷贝对象的开发者。这篇文章分享的目的更多还是希望用一篇文章整理清楚深浅拷贝的含义递归实现思路以及小伙伴们如果使用了这种黑科技一定要清楚这样写的优缺点。 一篇文章彻底说清JS的深拷贝and浅拷贝 这篇文章的受众 第一类,业务需要,急需知道如何深拷贝JS对象的开发者。 第二类,希望扎实JS基础,将来好去面试官前秀操作...

    big_cat 评论0 收藏0
  • Java深拷贝和浅拷贝

    摘要:中有三种类型的对象拷贝浅拷贝深拷贝延迟拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。意思是如果对象引用任何时候都不会被改变,那么没必要使用深拷贝,只需要使用浅拷贝就行了。 目录介绍 01.对象拷贝有哪些 02.理解浅拷贝 2.1 什么是浅拷贝 2.2 实现浅拷贝案例 03.理解深拷贝 3.1 什么是深拷贝 3.2 实现深拷贝案例 04.序列化进行拷贝 4.1 序列...

    wangshijun 评论0 收藏0
  • JS专题之深浅拷贝

    摘要:在之前的文章专题之数据类型和类型检测中我有讲过,中的数据类型分为两种,基本数据类型和引用数据类型,基本数据类型是保存在栈的数据结构中的是按值访问,所以不存在深浅拷贝问题。 前言 在开发过程中,偶尔会遇到这种场景,拿到一个数据后,你打算对它进行处理,但是你又希望拷贝一份副本出来,方便数据对比和以后恢复数据。 那么这就涉及到了 JS 中对数据的深浅拷贝问题,所谓深浅拷贝,浅拷贝的意思就是,...

    ASCH 评论0 收藏0
  • 拷贝与深拷贝的区别

    摘要:浅拷贝与深拷贝一数据类型数据分为基本数据类型,和对象数据类型。浅拷贝是按位拷贝对象,它会创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。对于字符串数字及布尔值来说不是或者对象,会拷贝这些值到新的数组里。 浅拷贝与深拷贝 一、数据类型数据分为基本数据类型(String, Number, Boolean, Null, Undefined,Symbol)和对象数据类型。 基本数据类...

    jsyzchen 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<