1- concat()
concat()
可以基于当前数组得所有项创建一个新数组。具体来说,这个方法会创造当前数组的一个副本,然后将接收到的参数添加到这个数组的副本,最后返回新的数组。
如果concat
中没有传递参数,它只是复制当前数组并返回副本
let a = [1,2,3,4];
let b = a.concat();
console.log(b); // [ 1, 2, 3, 4 ]
如果传递给concat
的是一个/多个数组,concat
会将这些数组中的每一项都添加到结果数组中,并返回
let a = [1,2,3,4];
let b = a.concat([5,6],[7,8,[9,0]],'a');
console.log(b); // [ 1, 2, 3, 4, 5, 6, 7, 8, [ 9, 0 ], 'a' ]
如果传递给concat
的不是数组,concat
会将这些值都添加到结果数组中,并返回
let a = [1,2,3,4];
let b = a.concat(5,6,7,8);
console.log(b); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]
2- slice()
slice()
会基于当前数组的一项/多项创建一个新数组,并返回,但不会影响原始数组。
此方法字符串也可用:
Array.prototype.slice()
String.prototype.slice()
如果slice()
只有一个参数,则返回从参数指定位置到当前数组末尾的所有项。
let a = [1,2,3,4];
let b = a.slice(1);
console.log(b); // [ 2, 3, 4 ]
console.log(a); // [ 1, 2, 3, 4 ] 原数组不受影响
如果slice()
有2个参数,则会返回从起始位置到结束位置之间的项,但不包括结束位置的项
let a = [1,2,3,4];
let b = a.slice(1,3);
console.log(b); // [ 2, 3 ]
console.log(a); // [ 1, 2, 3, 4 ]
如果slice()
参数是负数,则用数组长度加上该参数确定位置
let a = [1,2,3,4];
let b = a.slice(-2,-1);
console.log(b); // [ 3 ]
console.log(a); // [ 1, 2, 3, 4 ]
如果slice()
参数结束位置小于起始位置,则返回空数组
let a = [1,2,3,4];
let b = a.slice(-1,-2);
console.log(b); // []空数组
let a = [1,2,3,4];
let b = a.slice(-1,1);
console.log(b); // []空数组
3- splice()
最强大的数组方法 可以用来删除,插入,替换…返回对应的新数组,并且原始数组会受影响。
splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
删除
返回值:被删除的项
这时只需要指定2个参数:要删除的第一项的位置和要删除的项数
let a = [1,2,3,4];
let b = a.splice(0,2);
console.log(b); // [1,2]
console.log(a); // [3,4] 原始数组改变
插入
返回值:空数组
这时需要指定3个参数:起始位置,0(要删除的项数),要插入的项(可多个)
let a = [1,2,3,4];
let b = a.splice(1,0,5);
console.log(b); // [] 返回空数组
console.log(a); // 原始数组变为 [ 1, 5, 2, 3, 4 ]
let a = [1,2,3,4];
let b = a.splice(1,0,5,6,7);
console.log(b); // [] 返回空数组
console.log(a); // [ 1, 5, 6, 7, 2, 3, 4 ]
替换
返回值:被替换的项
这时需要指定3个参数:起始位置,要删除的项数,要插入的项(可多个)
let a = [1,2,3,4];
let b = a.splice(2,1,'hello');
console.log(b); // 返回被替换的项 [ 3 ]
console.log(a); // [ 1, 2, 'hello', 4 ]
let a = [1,2,3,4];
let b = a.splice(2,2,'hello');
console.log(b); // 返回被替换的项 [ 3, 4 ]
console.log(a); // [ 1, 2, 'hello' ]
4. ES6中数组新增fill()
方法:
fill()
方法用于将一个固定值替换数组的元素。
array.fill(value, start, end);
let arr = ['hello','world','php'];
arr.fill('java',2,3);
console.log(arr) //[ 'hello', 'world', 'java' ]