每日一问: 你知道几种清空数组的方法

498 阅读2分钟

前言

提到 JS 的数组,我们很快就会想到数组的各种 API,有用作插入删除的 push/pop/shift ,有用作高阶变换的 map/reduce/filter ,还有其他诸如 sort, concat, slice, indexOf 等等这些方法。但是数组却没有 clear 方法,可以用来清空整个数组,本文介绍几种清空数组的方法。

length

使用 length 属性,在 JS 里,数组的 length 属性不仅可读,还是可写的。

let arr =['清','空','数','组']
console.log(arr); // ['清','空','数','组']
// 数组长度为0
arr.length=0
console.log(arr);  // []

这句代码将数组的长度设置为 0,返回 0,此时在控制台再次打印 arr, 会输出 []

改变数组指向为一个新的空数组

arr 重新复制为空数组,之前的数组如果没有被引用,将等待垃圾回收。

let arr =['清','空','数','组']
console.log(arr); // ['清','空','数','组']
// 给原数组赋值为空数组
arr=[]
console.log(arr);  // []

缺点:仅仅改变指针的指向,如果有多个指针都指向了这个数组,只能修改一个

let arr =['清','空','数','组']
console.log(arr); // ['清','空','数','组']
let arr1=arr
arr=[]
console.log(arr,arr1);  // []  ['清','空','数','组']

使用splice方法删除整个数组内容

let arr =['清','空','数','组']
console.log(arr); // ['清','空','数','组']
// 数组方法 删除数组内的元素
arr.splice(0,arr.length)
console.log(arr);  // []

数组的 splice 方法用处多多,这里输入两个参数,第一个参数 0 表示从数组索引 0 处开始操作,第二个参数表示待删除的元素个数,这里输入数组的长度,也就是把整个数组的元素都删除了。splice 方法返回被删除的元素,所以这句代码执行后会返回 ['清','空','数','组'] ,此时再打印 arr, 输出空数组 []

while + pop/shift

通过循环数组中的元素,使用数组内置的 shift/pop 方法来删除数组元素,这两个方法都是直接修改了原数组

let arr =['清','空','数','组']
console.log(arr); // ['清','空','数','组']
// while  循环不断删除末尾/开头元素
while(arr.length){
//   arr.pop()
     arr.shift()

}
console.log(arr); // []