现在有一个数组arr=[1,2,3,4]
要追加了!

1.push方法

let arr=[1,2,3,4];
arr.push(5);
console.log(arr);
//得到[1,2,3,4,5]

push方法会修改原数组,可以带多个参数,都会一起加到数组末尾

2.unshift方法

let arr=[1,2,3,4];
arr.unshift(5);
console.log(arr);
//得到[5,1,2,3,4]

类似push,不过会加到开头

3.length属性

可以直接给length位置赋值

let arr=[1,2,3,4];
arr[arr.length]=5;
console.log(arr);
//得到[1,2,3,4,5]

数组长度会自动+1

4.splice方法

splice既可以删除数组元素,也可以追加数组元组

arrayObject.splice(index,howmany,item1,…,itemX)
其中,index和howmany是必须,后面的item不是必须的
howmany指的是删除元素的个数,是0则为不删除
index是开始修改的索引位置
item是在index处增加元素的列表

//删除
let arr=[1,2,3,4];
arr.splice(1,1);
console.log(arr);
//得到[1,3,4]
//增加
let arr=[1,2,3,4];
arr.splice(1,0,1.5);
console.log(arr);
//得到[1,1.5,2,3,4]

另外,如果howmany非0的情况下,item不为空,那么会先删掉howmany对应的数组元素,再在index位置追加item

let arr=[1,2,3,4];
arr.splice(1,1,9,9,9);
console.log(arr);
//得到[1,9,9,9,3,4]

5.concat方法

concat方法和push类似,不过会生成新数组,不会修改原数组

let arr = [1,2,3];
console.log(arr.concat(4,5));
//得到[1,2,3,4,5]

也用于数组连接

let arr1 = [1,2,3];
let arr2 = [4,5,6];
console.log(arr1.concat(arr2));
//得到[1,2,3,4,5,6]

6. …

…也就是拓展运算符

let arr1=[1,2,3];
let arr2=[...arr1,4,5];
console.log(arr2);
//得到[1,2,3,4,5]

…不只是用于复制数组,它可以复制一个对象中所有可遍历的属性到一个新对象
比如

let obj1={a:1 , b:2 , d:9};
let obj2={c:2 , d:5 , ...obj1};
console.log(obj2);
//得到{c:2,a:1,b:2,d:9}
//如果有重复的,会被覆盖掉,比如这里的d

这个复制是一种浅拷贝,所以只复制了对象的地址
比如,Symbol也会原封不动的复制过来

const obj1 = {"key":Symbol()};
const obj2 = { ...obj1 };
console.log(obj1==obj2);//false
console.log(obj1["key"]==obj2["key"]);//true

同理:

let obj1={a:{b:"c"}}
let obj2={...obj1};
obj2.a.b="d";
console.log(obj1);
console.log(obj2);
//得到的都是{a:{b:"d"}}
//也就证明了复制的是地址

除此之外,还可以把他和解构赋值结合,比如

let [first,...rest]=[1,2,3,4,5];
console.log(first);//1
console.log(rest);//[2,3,4,5]

这种方法下,…必须在最后,在开头[…rest,first]和在中间[first,…rest,last]都会报错

也可以用这个来拆分字符串

let hello=[..."helloword"];
console.log(hello);
//['h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'd']
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐