编程小知识之 JavaScript 数组拷贝
栏目: JavaScript · 发布时间: 5年前
内容简介:本篇文章简单介绍了几种在 JavaScript 中进行数组拷贝的方法直接迭代数组进行拷贝可能是最直观的方法,只是性能不高Array.map 可以对数组元素进行映射(map)操作,如果提供一个自身到自身的映射函数,我们便可以实现数组的拷贝了.
本篇文章简单介绍了几种在 JavaScript 中进行数组拷贝的方法
- 迭代拷贝
直接迭代数组进行拷贝可能是最直观的方法,只是性能不高
// use "for" array = [1, 2, 3]; arrayClone = []; for (i = 0; i < array.length; ++i) { arrayClone[i] = array[i]; }
// use "while" array = [1, 2, 3]; arrayClone = []; i = 0; while (i < array.length) { arrayClone[i] = array[i]; ++i; }
- 使用 Array.map
Array.map 可以对数组元素进行映射(map)操作,如果提供一个自身到自身的映射函数,我们便可以实现数组的拷贝了.
array = [1, 2, 3]; // identity map identity = (x) => x; arrayClone = array.map(identity);
- 使用 Array.filter
同 Array.map 类似, Array.filter 可以对数组元素执行过滤(filter)操作,如果提供一个固定返回真值的过滤函数,我们同样可以实现数组拷贝.
array = [1, 2, 3]; always = () => true; arrayClone = array.filter(always);
- 使用 Array.slice
Array.slice 可能是 最常用 的在 JavaScript 中拷贝数组的方法,使用上也比较简洁.
array = [1, 2, 3]; arrayClone = array.slice();
- 使用 Array.concat
Array.concat 方法可以用于合并两个或多个数组,如果我们将空数组作为函数参数,也能实现数组拷贝的目的.
array = [1, 2, 3]; arrayClone = array.concat(); arrayClone2 = array.concat([]); arrayClone3 = [].concat(array);
- 使用 Array.reduce
Array.reduce 可以对数组元素执行化简(reduce)操作,使用他我们同样可以进行数组拷贝,只是代码上比较复杂,个人也不是很推荐这种写法,示例代码如下:
array = [1, 2, 3]; reduce = (newArray, element) => { newArray.push(element); return newArray; } arrayClone = array.reduce(reduce, []);
- 使用 Array.from
Array.from 类似于 Array.map, 使用该函数也可以进行数组拷贝,并且语义上也是最接近数组拷贝的,代码上亦比较简洁.
array = [1, 2, 3]; arrayClone = Array.from(array);
- 使用 ES6 中的展开(Spread)语法
ES6 引入了展开(Spread)语法,通过将数组元素展开,再将展开元素构造成数组的方式,我们也可以进行数组拷贝:
array = [1, 2, 3]; arrayClone = [...array];
- 使用 JSON.parse 和 JSON.stringify
使用 JSON.stringify 将数组"序列化"为字符串,再通过解析该字符串并"反序列化"成数组,我们便可以完成数组的深拷贝操作.
array = [1, 2, 3]; arrayClone = JSON.parse(JSON.stringify(array));
- 使用 jQuery 的 $.extend
jQuery 的 $.extend 也可以实现数组的深拷贝,只是需要引入 jQuery.
array = [1, 2, 3]; arrayClone = $.extend(true, [], array);
当然,我们还有其他方法在 JavaScript 中进行数组拷贝(Object.create etc.),有兴趣的朋友可以继续了解.
更多资料
以上所述就是小编给大家介绍的《编程小知识之 JavaScript 数组拷贝》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python学习手册
Mark Lutz / 侯靖 / 机械工业出版社 / 2009-8 / 89.00元
《Python学习手册(第3版)》讲述了:Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择。无论你是刚接触编程或者刚接触Python,通过学习《Python学习手册(第3版)》,你可以迅速高效地精通核心Python语言基础。读完《Python学习手册(第3版)》,你会对这门语言有足够的了解,从而可以在你所从事的任何应用领域中使用它。 《Python学习手册(......一起来看看 《Python学习手册》 这本书的介绍吧!