concat 合并两个或多个数组
- 定义:
- 语法:
const newArr = oldArr.concat(arr1, arr2, ..., arrN)
- 参数:
- arrN 该参数可以是具体的值,也可以是数组对象。可以是任意多个
- 返回值:
var arr1 = ['a', 'b', 'c'];
var arr2 = [1, 2, 3];
var arr3 = arr1.concat(arr2);
console.log({
arr1, arr2, arr3
});
const arr = [1].concat([1,2,[2,3]])
console.log(arr); // [ 1, 1, 2, [ 2, 3 ] ]
ES6 扩展运算符 ... 合并数组
let a = [1, 2, 3]
let b = [0, ...a, 4, 5]
console.log(a, b); // [ 1, 2, 3 ] [ 0, 1, 2, 3, 4, 5 ]
⭐️ slice 浅拷贝数组的元素
- 定义:
- 返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。
- 语法:
- 参数(可选):
- begin: 索引数值,接受负值,从该索引处开始提取原数组中的元素,默认值为0。
- end: 索引数值(不包括),接受负值,在该索引处前结束提取原数组元素,默认值为数组末尾(包括最后一个元素)。
- 返回值:
- 注意点:
- slice()是浅拷贝,对于复杂的数据类型浅拷贝,拷贝的只是指向原数组的指针,所以无论改变原数组,还是浅拷贝的数组,都是改变原数组的数据。
var arr = [
'Lance',
{
a: {
b: {
c: 3
}
}
}
]
var arr2 = arr.slice()
arr2[1].a.b = 3
console.log(arr, arr2) // [ 'Lance', { a: { b: 3 } } ] [ 'Lance', { a: { b: 3 } } ]
begin 参数
如果传负数 ,表示从原数组中的倒数第几个元素开始提取
- e.g.
slice(-2)
表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。