首页 > 其他分享 >JS代码片段-Array数组克隆的几种方法

JS代码片段-Array数组克隆的几种方法

时间:2024-12-09 20:30:57浏览次数:10  
标签:片段 克隆 structuredClone JS let 数组 Array prototype

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

相关文章

  • Node.js 事件循环
    事件循环是Node.js处理非阻塞I/O操作的核心机制,使得单线程能够高效处理多个并发请求。Node.js是基于单线程的JavaScript运行时,利用事件循环来处理异步操作,如文件读取、网络请求和数据库查询。事件循环使得Node.js能够非阻塞地运行代码、处理多个连接、以及执行异步......
  • Node.js 回调函数
    Node.js是一个基于ChromeV8引擎的JavaScript运行环境,它使得JavaScript可以脱离浏览器运行在服务器端。Node.js的核心特性之一是其非阻塞I/O(输入/输出)模型,这使得Node.js非常适合处理高并发的网络应用。Node.js异步编程的直接体现就是回调。在Node.js中,回调......
  • nodejs初学
    Node.js基础Node.js是一个基于ChromeV8引擎的JavaScript运行时,用于在服务端运行JavaScript代码。以下是Node.js的基本概念和常用功能。Node.js简介特点单线程、非阻塞I/O:通过事件循环和异步I/O,提高高并发能力。基于模块化:使用CommonJS模块规范,代码组织更清......
  • Dexie.js 库 增删改查indexdb示例,游标、索引使用等
    增删改查以下是如何使用Dexie.js库进行增删改查操作的示例:1.初始化数据库首先,你需要安装Dexie.js:npminstalldexie然后,在你的代码中引入并初始化Dexie.js:importDexiefrom'dexie';constdb=newDexie('myDatabase');db.version(1).stores({myObjectStore:......
  • JS-5 JavaScript注释与常见输出方式
    注释与输出方式:注释:单行注释、多行注释。输出方式:弹出框、页面输出、控制台输出。 1、JavaScript注释源码中注释是不被引擎所解释的,它的作用是对代码进行解释。 JavaScript提供两种注释的写法:一种是单行注释,用//起头;另一种是多行注释,放在/和/之间。//这是......
  • 高效开发:掌握 Vue.js 的五个实用技巧
    高效开发:掌握Vue.js的五个实用技巧......
  • JS-4 JavaScript 引入到文件
    JavaScript常用引入方式:嵌入到HTML文件中、引入本地独立JS文件、引入网络来源文件1、嵌入到HTML文件中<body>  <script>    varage=20;    console.log(age);  </script></body> 2、引入本地独立JS文件<body>  <scriptsrc=".......
  • JS-3 变量
    1、变量varnum=10;变量本质(固定空间)=停车位变量名称(通过名字操控空间)=车位编号数据(变化的量)=车2、变量的重新赋值varnum=10;num=20; 3、变量提升JavaScript引擎的工作方式是,先解析代码,获取所有被声明的变量,然后再一行一行地运......
  • JS-2 JavaScript语句、标识符
    1、语句JavaScript程序的单位是行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句varnum=10;语句以分号结尾,一个分号就表示一个语句结束。 在html中用script写css 2、标识符标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符......
  • (2)JS-Clipper2之Clipper
    1.类描述            Clipper类封装了多边形上的布尔运算(交集、并并、差和异或),也称为多边形裁剪。输入多边形(主题subject 和剪辑集 clipsets)通过Clipper对象的AddPath和AddPaths方法传递给它,剪辑操作通过调用它的Execute方法执行。通过重复调用Execute,可以......