首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JS拷贝方法

记一下js拷贝的几种方法 使用递归 通过JSON对象 通过jQuery的extend方法 Object.assign() lodash函数 使用递归 //使用递归的方式实现数组、对象的拷贝 function...deepClone(obj) { //判断拷贝的要进行拷贝的是数组还是对象,是数组的话进行数组拷贝,对象的话进行对象拷贝 var objClone = Array.isArray(obj)...[] : {}; //进行拷贝的不能为空,并且是对象 if (obj && typeof obj === "object") { for (key in obj) { if...objClone[key] = obj[key]; } } } } return objClone; } 通过JSON对象 //通过js...= $.extend(true,[],array); Object.assign() 对象中只有一级属性,没有二级属性的时候,为拷贝 对象中有对象的时候,在二级属性以后就是浅拷贝 lodash函数

2.7K10

js拷贝浅拷贝

device-width, initial-scale=1.0"> Document 1234567891011// 在JS..., // 也就是说当我们创建新数组newArr时,赋予newArr的是arr在栈中的地址(指针), // 其实仍与旧数组arr共享同一个内存,所以修改新数组newArr后,旧数组arr也会被修改// 拷贝...// 它可以将复杂类型的数据相互独立出来,互不影响 // 拷贝不会拷贝引用类型的引用,而是将引用类型的值全部拷贝一份,形成一个新的引用类型, // 这样就不会发生引用错乱的问题,使得我们可以多次使用同样的数据...obj //基本类型直接拷贝 } return result; } // 2、 function deepClone(target) { // 定义一个变量 let result; // 如果当前需要拷贝的是一个对象的话更多内容请见原文

2.5K20

js如何实现拷贝

拷贝是一种常见的操作,用于创建原对象的完全独立副本,避免原对象和副本之间的数据共享。拷贝不仅复制了对象的第一层结构,还会递归复制所有嵌套的对象和数组,确保副本是完全独立的什么叫做拷贝?...由此看来在处理复杂的数据结构时,拷贝通常是更为可靠的选择。因为拷贝是一种更加彻底和安全的复制方式,可以保证复制后的对象与原始对象之间完全独立,不会相互影响。...js实现拷贝的几种方式1.递归实现递归是实现拷贝的一种常见方式。通过递归遍历对象的所有属性,对每个属性进行复制,如果属性的值是对象或数组,则递归调用拷贝函数。...JSON序列化与反序列化另一种实现拷贝的方式是利用JSON的序列化和反序列化。通过将对象转换为JSON字符串,再将JSON字符串转换回对象,可以实现拷贝的效果。...这样就可以实现一个带有特殊写法的拷贝函数。需要注意的是,使用Proxy对象实现拷贝虽然比较巧妙和骚气,但也可能会增加代码的复杂性和理解难度。

5910

JS拷贝几种实现方法

1、使用递归(循环)的方式实现拷贝 //使用递归的方式实现数组、对象的拷贝 function deepClone1(obj) { //判断拷贝的要进行拷贝的是数组还是对象,是数组的话进行数组拷贝...,对象的话进行对象拷贝 //进行拷贝的不能为空,并且是对象或者是 if (obj && typeof obj === "object") { var objClone = Array.isArray...objClone[key] = obj[key]; } } } return objClone; } return obj; } 2、lodash函数库实现拷贝...lodash很热门的函数库,提供了 lodash.cloneDeep()实现拷贝 3、通过 JSON 对象实现拷贝 //通过js的内置对象JSON来进行数组对象的拷贝 function deepClone2...objClone = JSON.parse(_obj); return objClone; } 4、Object.assign()拷贝(并不深,一级拷贝) 当对象中只有一级属性,没有二级属性的时候,此方法为拷贝

1.6K20

JS 数组、对象的拷贝

博客地址:https://ainyi.com/72 JavaScript 程序中,对于简单的数字、字符串可以通过 = 赋值拷贝 但是对于数组、对象、对象数组的拷贝,就有浅拷贝和拷贝之分 浅拷贝就是当改变了拷贝后的数据...,原数据也会相应改变 来说说拷贝 数组拷贝 遍历赋值 不推荐此方法 let a = [1, 2, 3] let b = [] for (let val of a) { b.push(val) }.../ [1, 2, 3, 4] let a = [1, 2, 3] let b = Array.from(a) b.push(4) a // [1, 2, 3] b // [1, 2, 3, 4] 对象拷贝...,但是对于二维数组、对象数组、对象里包含对象,以上方法均达不到拷贝方法 以上只能达到数组、对象的第一层的==拷贝==,对于里面的数组或对象属性则是==浅拷贝==,因为里面的内存地址只是拷贝了一份,但都是指向...cloneDeep 使用 lodash 插件的拷贝方法 // 官方例子 var objects = [{ 'a': 1 }, { 'b': 2 }]; var deep = _.cloneDeep

8.2K30

js库 - 浅拷贝 & 拷贝

栈内存中简单数据类型直接拷贝就能得到一个副本,但是复杂数据类型的拷贝如果也想得到一个副本,就需要拷贝了。...拷贝 具体拷贝就是要理解了复杂类型拷贝的缺点,然后再进行弥补。 既然想要复杂类型也像简单类型那样拷贝一个新数据的话,就不单单是拷贝地址了。...但其实在拷贝阶段,直接将其放到object形式处理了。...然后就是拷贝的代码: deepClone: function (origin) { /* * @Author: guojufeng@ * @Date: 2018-10-30 20...如果循环过程中,数组中嵌套复杂类型,再次递归调用拷贝方法。 对于对象,新建一个对象,然后for in遍历拷贝非原型值。如果循环过程中,对象中嵌套复杂类型,再次递归调用拷贝方法。

2.1K30

JS 拷贝与浅拷贝

其实在工作写代码和面试中,会经常碰到这两个概念:拷贝,浅拷贝。但今天的重点是拷贝。 下面我将简单介绍下什么是拷贝,浅拷贝?...拷贝是将一个Object对象的内容完全拷贝一份给新对象。修改原对象的属性或者属性值,都不会影响新对象。原对象和新对象是完全独立的,互不影响。...今天的重点是拷贝,浅拷贝没啥可讲的。 talk is cheap,show me the code! 上浅拷贝代码: function shallowCopy(obj) { if (!...3.观察obj3和obj1,可以知道利用JSON.stringify、JSON.parse实现的拷贝,是可以实现拷贝的。 我们再给对象加多点属性,比如加个函数。...所以通过JSON.parse和JSON.stringify实现的拷贝不完美。 那么我分享下我自己写的一个对象拷贝的方法,这就是我个人比较常用的方案了。

2.1K10

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券