JavaScript数组的深拷贝

导读:本篇文章讲解 JavaScript数组的深拷贝,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

浅拷贝是copy的地址,一改全改

丛继永

var arr1 = [1,2,3];
var arr2 = arr1; //arr1的地址会赋值给arr2,一改全改

深拷贝是copy的值,不影响原来的值

slice(start,end) 方法以新的数组对象,返回数组中被选中的元素。不会改变原始数组。包括开始,不包括结束

const clone1 = (arr) => arr.slice(0);

…reset参数的逆运算[展开],复制,合并,伪数组转数组

const clone2 = (arr) => [...arr];

Array.from 把伪数组或可遍历的对象转换成真正的数组

const clone3 = (arr) => Array.from(arr);

.map数组遍历方法,对数组进行循环,返回值会组成一个新的数组

const clone4 = (arr) => arr.map((x) => x);

JSON.parse(text[, reviver]) 将数据转换为 JavaScript对象
JSON.stringify(value[, replacer[, space]]) 将JavaScript对象转换为字符串

const clone5 = (arr) => JSON.parse(JSON.stringify(arr));

.concat 将多个数组合成一个数组返回

const clone6 = (arr) => arr.concat([]);

.filter 对数组元素进行判断满足条件的会组成一个新的数组

const clone7 = (arr) =>arr.filter((x)=>x)

开始调用

let arr1 = [1, 2, 3]  
let arrCopy = []
arrCopy = clone7(arr1)
arr1 = [4,5,6]
console.log(arrCopy)

总体来说只要是有返回值的都可以,在来个原始的for循环

var arr1 = [1,2,3];
var arrCopy = [];
for(var i = 0;i<arr1.length;i++){
	arrCopy[i] = arr1[i]
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/4849.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!