示例
console.log(...[1,2,3]);
console.log([1,2,...[3,4,5]]);
function add(x) {
console.log(...(x>0?[1,2,3]:[4,5,6]));
}
add(10)
let arr = [1,2,3];
function add(a,b,c){
console.log(a+b+c);
}
//es5
add.apply(null,arr); //6
//es6
add(...arr) //6
复制数组
let arr = [1,2,3];
//es5
let arr3 = arr.concat([4]);
//es6
let arr3 = [...arr,4];
console.log(arr2);
console.log(arr3);
合并数组
let arr = [1,2,3];
let arr2 = [4,5,6]
//es5
let arr3 = arr.concat(arr2);
//es6
let arr4 = [...arr,...arr2];
console.log(arr3);
console.log(arr4);
这 两 种 方 法 是 浅 拷 贝 \color{#c7254e}{这两种方法是浅拷贝} 这两种方法是浅拷贝如果修改了数组的值被复制或者复制的新数组都会一同改变
Array.from()用于将伪数组或者可遍历的对象转化成真正的数组
let arr = {
0:'a',
1:'b',
2:'c',
length:3
};//伪数组
//es5
let newArr1=[].slice.call(arr);
//es6
let newArr2 = Array.from(arr);
console.log(newArr1);
console.log(newArr2);
这里科普一下 s l i c e \color{#c7254e}{slice} slice方法
s l i c e \color{#c7254e}{slice} slice方法用于提取数组某个部分
定义: s l i c e ( s t a r t , e n d ) \color{#c7254e}{slice(start,end)} slice(start,end)
start(提取元素包含开始元素)表示提取的开始位置
end(提取元素不含结束元素)表示提取的结束的位置
这两个值均可指定负数表示从倒数开始提取
如果两个参数都未指定返回整个 数 组 \color{#c7254e}{数组} 数组
let arr2 = [1,2,3,4,5];
console.log(arr2.slice(1,3)); //从数组下标1开始提取到3但是不包含3
console.log(arr2.slice(-2,-1));//从倒数第二个开始提取到 倒数第一个 不包含倒数第一个
console.log(arr2.slice()); //返回整个数组
将指定数组元素复制到其他位置
Array.prototype.copyWithin(target, start = 0, end = this.length)
var arr2 = [1,2,3,4,5];
console.log(arr2.copyWithin(0,3)); //将 3开始的数据转义到 从0 开始
var arr2 = [1,2,3,4,5];
console.log(arr2.copyWithin(0,4,5));//从4开始到下标为5的数据 转移到下标0的元素上
var arr2 = [1,2,3,4,5];
console.log(arr2.copyWithin(-1,0,1));//将0-1下标的数据转义到 倒数第一个元素上