编程小知识之 JavaScript 数组拷贝

栏目: JavaScript · 发布时间: 4年前

内容简介:本篇文章简单介绍了几种在 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 数组拷贝》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

他们以为自己很厉害:12个企业管理陷阱

他们以为自己很厉害:12个企业管理陷阱

[法] 克里斯蒂娜•凯德朗 / 王倩 / 人民邮电出版社 / 2018-11 / 69.00元

本书讲述了震惊世界的150个企业管理失败案例,并从产品与服务定位、技术 创新、广告与营销策略、跨文化发展、融资战略到企业文化与员工管理等众多角度, 揭露了商场各种败局的内幕。作者以风趣的笔触讲述了国际知名企业和商界精英们 的惨痛教训,又以专业角度解读了这些失利背后的经济学和管理学因素,给读者带 来了启示。一起来看看 《他们以为自己很厉害:12个企业管理陷阱》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试