JavaScript 自身提供了几种克隆数组的方法,以下做了汇总,以作参考:
1.展开运算符(...)
ES6引入了展开运算符(...),这是创建数组浅克隆最常见的方法。
let a = [1, 2, 3, 4, 5];
let b = [...a];
2.Array.from()
let a = [1, 2, 3, 4, 5];
let b = Array.from(a);
3.Array.prototype.slice()
与展开运算符类似,也可以使用Array.prototype.slice()方法来创建数组的浅克隆。
let a = [1, 2, 3, 4, 5];
let b = a.slice();
4.Array.prototype.map()
使用Array.prototype.map()方法将数组的每个元素映射到自身,这样也可以创建一个新的数组。
let a = [1, 2, 3, 4, 5];
let b = a.map(i => i);
5.Array.prototype.filter()
类似地,Array.prototype.filter()可用于返回true每个元素,这样也可以生成一个包含原始数组的所有元素的新数组。
let a = [1, 2, 3, 4, 5];
let b = a.filter(() => true);
6.Object.assign()
Object.assign() 适用与对象的克隆,数组是对象的一种,那么同样可以用于数组克隆。
let a = [1, 2, 3, 4, 5];
let b = Object.assign([], a);
7.structuredClone()
如果想克隆一个包含对象、函数或类实例的数组,可以使用结构化克隆(structuredClone)全局函数,它可以用来深度克隆对象。
这种方式不常见,structuredClone() 是新添加的函数, 目前所有现代浏览器和Node.js v17.0.0以上版本均已支持。
let a = [{ foo: 'bar' }, { baz: 'qux' }];
let b = structuredClone(a);
console.log(a === b); // false
console.log(a[0] === b[0]); // false
声明:部分内容来自网络
Awesome Top - 跟踪开源热点,精选热门开源项目,分析开源项目趋势,挖掘开源项目价值!
标签:片段,克隆,structuredClone,JS,let,数组,Array,prototype From: https://blog.csdn.net/weixin_44132326/article/details/144356215