今天,偶然在Javascript的练习中,发现了一种数据快速千夫指的方法:
var array = [1, 2, 3, 4, 5],
copy = array.slice();
// 输出结果为false,说明它们指向了不同的数组对象
alert(array == copy)
查阅JS手册,发现对slice方法的说明如下:
返回值
返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
说明
请注意,该方法并不会修改数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。
再证明此方法为浅复制:
var array = [{name: 'yiifaa'}],
copy = array.slice();
// 返回true,说明第一个元素完全相同
alert(array[0] === copy[0])
结论
巧用Array.prototype.slice()方法,可以快速复制整个数组,当然,如果传入参数,也可以只负责一部分。