js数组深拷贝汇总

news/2024/7/19 14:31:26 标签: javascript, 前端, 开发语言, js, ecmascript

1.for 循环实现数组的深拷贝

通过对数组的for循环,即可实现对数组的深拷贝了。

javascript">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
}

2.slice 方法实现数组的深拷贝

将原数组中抽离部分出来形成一个新数组。我们只要设置为抽离全部,即可完成数组的深拷贝。

javascript">var arr = [1,2,3,4,5]
var arr2 = arr.slice(0)
arr[2] = 5
console.log(arr)
console.log(arr2)
// 输出arr为  [1, 2, 5, 4, 5]
// 输出arr2为 [1, 2, 3, 4, 5]

3.concat 方法实现数组的深拷贝

用于连接多个数组组成一个新的数组的方法。那么,我们只要连接它自己,即可完成数组的深拷贝。

javascript">var arr = [1,2,3,4,5]
var arr2 = arr.concat()
arr[2] = 5
console.log(arr)
console.log(arr2)
// 输出arr为  [1, 2, 5, 4, 5]
// 输出arr2为 [1, 2, 5, 4, 5]

4.使用JSON.parse()和JSON.stringify()

javascript">const arr1 = [1, 2, 3, 4];
const arr2 = JSON.parse(JSON.stringify(arr1));

5. 使用Array.from()

javascript">const arr1 = [1, 2, 3, 4];
const arr2 = Array.from(arr1);

6.使用Array.map()

javascript">const arr1 = [1, 2, 3, 4];
const arr2 = arr1.map(item => item);

7.ES6扩展运算符实现数组的深拷贝

javascript">var arr = [1,2,3,4,5]
var [ ...arr2 ] = arr
arr[2] = 5
console.log(arr)
console.log(arr2)
// 输出arr为  [1, 2, 5, 4, 5]
// 输出arr2为 [1, 2, 5, 4, 5]

http://www.niftyadmin.cn/n/5136792.html

相关文章

0-1背包问题【穷举法+二维dp数组】

问题描述&#xff1a; 使用穷举法解决0/1背包问题。问题描述&#xff1a;给定n个重量为{w1, w2, … ,wn}、价值为{v1, v2, … ,vn} 的物品和一个容量为C的背包&#xff0c;求这些物品中的一个最有价值的子集&#xff0c;且要能够装到背包中。 穷举法&#xff1a;每件物品装还是…

安卓平板-学习平板、三防工业平板安卓主板方案

近年来&#xff0c; 生活和工业产品的需求呈爆发式增长&#xff0c;学习平板、工业平板和智能设备的出货量正处于快速增长的阶段。尤其是安卓平板智能设备&#xff0c;其增长势头依然迅猛。根据预测&#xff0c;到2024年&#xff0c;中国平板设备的总出货量将会进一步增长。 安…

Python嵌入式数据库 / 轻量级数据库 / 小型数据库介绍(SQLite、Pandas DataFrame、TinyDB)(python数据库)

文章目录 Python嵌入式数据库/轻量级数据库介绍什么是嵌入式数据库/轻量级数据库&#xff1f;SQLitePandasTinyDB总结 Python嵌入式数据库/轻量级数据库介绍 在构建应用程序时&#xff0c;数据存储是必不可少的一部分。传统的方式是使用如MySQL、PostgreSQL这样的重量级数据库…

NOIP2023模拟6联测27 C. 点餐

NOIP2023模拟6联测27 C. 点餐 题目大意 有 n n n 种菜品&#xff0c;每样菜品有 a i , b i a_i , b_i ai​,bi​ 假设有某位顾客点了 k k k 样菜品&#xff0c;那么价格为 ∑ i 1 k a p i max ⁡ i 1 k b p i \sum_{i 1}^k a_{p_i}\max_{i 1}^kb_{p_i} ∑i1k​api​…

Linux zip命令:压缩文件或目录

我们经常会在 Windows 系统上使用 “.zip”格式压缩文件&#xff0c;其实“.zip”格式文件是 Windows 和 Linux 系统都通用的压缩文件类型&#xff0c;属于几种主流的压缩格式&#xff08;zip、rar等&#xff09;之一&#xff0c;是一种相当简单的分别压缩每个文件的存储格式&a…

【Leetcode】【简单】13. 罗马数字转整数

力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台备战技术面试&#xff1f;力扣提供海量技术面试资源&#xff0c;帮助你高效提升编程技能&#xff0c;轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/roman-to-integer/description/ …

【数据结构】模拟实现priority_queue

namespace my_priority_queue {// 仿函数/函数对象template<class T>struct greater{bool operator()(const T& x, const T& y){return x > y;}};template<class T>struct less{bool operator()(const T& x, const T& y){return x < y;}};/…

设计模式: 面向对象思想,软件设计原则与设计模式之间的关系

面向对象 我们知道一般编程思想有&#xff1a;面向过程&#xff0c;面向对象&#xff0c;面向切面编程&#xff0c;在软件开发中比重最大的就是面向对象编程了在面向对象中有一个"类"的概念&#xff0c;其实它就是模板面向对象的三要素&#xff1a;继承 封装 多态 继…