JS中Array对象的一些注意事项

1.若用push()来合并两个数组,例a.push(b)那么一整个b数组才是a数组的一个子元素

1
2
3
4
let array1 = [1,2,3];
let array2 = [4,5];
array1.push(array2);
console.log(array1[3]); //4 5

若用concat()方法每个参数的顺序依次是该参数的元素(如果参数是数组)或参数本身(如果参数不是数组)。它不会递归到嵌套数组参数中。

2.sort()方法会改变原数组

3.复制数组

(1)浅拷贝

1
2
3
let array1 = [1,2,3];
let array2 = array1;
//这种是浅拷贝,也叫引用拷贝,当array2改变时,array1也会相应的改变

(2)深拷贝

1
2
3
4
5
6
7
8
9
10
11
12
const players = ['Wes', 'Sarah', 'Ryan', 'Poppy'];

// 创建新数组并且将原来的数组拼接到新数组中
const team3 = [].concat(players);

// ES6 Spread语法
const team4 = [...players];
team4[3] = 'heeee hawww';
console.log(`team4:${team4}`);

const team5 = Array.from(players);
console.log(`team5:${team5}`);

当我们修改team4时,players并没有发生任何变化,上面的contact,...,Array.from都属于深拷贝,会将原来的内容重新拷贝一份,所以当你操作一个指针时不会影响原对象。