首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js 数组间赋值

在JavaScript中,数组间的赋值通常指的是将一个数组的内容复制到另一个数组中。这里有两种常见的赋值方式:浅拷贝和深拷贝。

浅拷贝(Shallow Copy)

浅拷贝只复制数组的顶层元素,如果数组中包含的是基本类型(如数字、字符串、布尔值),则复制的是值;如果数组中包含的是引用类型(如对象、数组),则复制的是引用,即两个数组中的对象或数组仍然指向内存中的同一个实例。

实现方式:

  • 使用Array.prototype.slice()方法
  • 使用数组展开运算符[...]
  • 使用Array.from()方法

示例代码:

代码语言:txt
复制
let arr1 = [1, 2, { a: 3 }];
let arr2 = arr1.slice();

arr2[2].a = 4;

console.log(arr1); // [1, 2, { a: 4 }]
console.log(arr2); // [1, 2, { a: 4 }]

深拷贝(Deep Copy)

深拷贝会复制数组中的所有元素以及它们包含的对象或数组,创建一个完全独立的新数组。

实现方式:

  • 使用JSON.parse(JSON.stringify(array))(不适用于包含函数、undefined、Infinity等特殊值的数组)
  • 使用递归函数
  • 使用第三方库,如lodash的_.cloneDeep方法

示例代码:

代码语言:txt
复制
let arr1 = [1, 2, { a: 3 }];
let arr2 = JSON.parse(JSON.stringify(arr1));

arr2[2].a = 4;

console.log(arr1); // [1, 2, { a: 3 }]
console.log(arr2); // [1, 2, { a: 4 }]

应用场景:

  • 浅拷贝适用于数组中元素为基本类型或不需要独立修改嵌套对象的场景。
  • 深拷贝适用于需要完全独立的新数组,且数组中可能包含嵌套对象的场景。

注意事项:

  • 使用JSON.parse(JSON.stringify(array))进行深拷贝时,需要注意它不能复制函数、undefinedInfinityNaNDate对象、RegExp对象、MapSetundefinedInfinity-InfinityNaNSymbol等特殊值。
  • 递归深拷贝函数需要自己实现或使用第三方库,以避免循环引用等问题。

了解这些基础概念和实现方式,可以帮助你在不同的场景下选择合适的数组赋值方法,避免不必要的错误和问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

49秒

JS数组常用方法-ForEach()

5分6秒

21.尚硅谷_JS基础_赋值运算符

4分52秒

74-依赖注入之为数组类型的属性赋值

13分3秒

day07_数组/07-尚硅谷-Java语言基础-算法:数组元素的赋值

11分43秒

day07_数组/09-尚硅谷-Java语言基础-课后练习:数组赋值

13分3秒

day07_数组/07-尚硅谷-Java语言基础-算法:数组元素的赋值

11分43秒

day07_数组/09-尚硅谷-Java语言基础-课后练习:数组赋值

13分3秒

day07_数组/07-尚硅谷-Java语言基础-算法:数组元素的赋值

11分43秒

day07_数组/09-尚硅谷-Java语言基础-课后练习:数组赋值

24分45秒

70.尚硅谷_JS基础_数组简介

4分50秒

74.尚硅谷_JS基础_数组练习

14分17秒

71.尚硅谷_JS基础_数组字面量

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券