在 JavaScript 中,如果想要清空一个数组(即删除数组的所有元素),主要有以下 3 种方法。
- 将 length 属性设置为 0。
- 重新赋值空数组。
- 使用 splice() 方法。
将 length 属性设置为 0
在 JavaScript 中,我们可以将数组的 length 属性值设置为 0,从而达到清空数组的目的。这是清空数组最简洁,也是最高效的方法。
不过需要注意的是,将 length 属性设置为 0,会修改原数组(即删除数组的所有元素)。
示例 1:设置 arr.length = 0
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const arr = ["HTML", "CSS", "JavaScript", "Vue", "React"];
// 设置长度为0
arr.length = 0;
console.log(arr);
console.log(arr.length);
</script>
</body>
</html>运行结果如下。
[]
0分析:
arr.length = 0; 会直接修改原数组 arr,并删除了 arr 中的所有元素。这种方法对于所有引用该数组的地方都会生效,因为操作的是同一个数组对象。
提示: 在实际开发中,首选推荐使用 arr.length = 0; 这种方式来清空数组,这是最简洁且性能最好的方法。
赋值为空数组 “[]”
在 JavaScript 中,我们可以给数组变量重新赋值为一个新的空数组,这样同样可以清空数组。
这种方法实际上是创建了一个新的空数组,并将变量指向这个新的空数组。原数组(如果不再有其他引用指向它)将被垃圾回收机制回收。
示例 2:赋值为空数组
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
let arr = ["HTML", "CSS", "JavaScript", "Vue", "React"];
// 赋值为空数组
arr = [];
console.log(arr);
console.log(arr.length);
</script>
</body>
</html>运行结果如下。
[]
0示例 3:多个引用的情况
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
let arr = ["HTML", "CSS", "JavaScript", "Vue", "React"];
const temp = arr;
console.log(arr);
console.log(temp);
// 将 arr 指向一个新的空数组
arr = [];
console.log(arr);
console.log(temp);
</script>
</body>
</html>运行结果如下。
[ "HTML", "CSS", "JavaScript", "Vue", "React" ]
[ "HTML", "CSS", "JavaScript", "Vue", "React" ]
[]
[ "HTML", "CSS", "JavaScript", "Vue", "React" ]分析:
在这个例子中,arr = []; 会将 arr 变量指向了一个全新的空数组。然而,变量 temp 仍然指向最初的的数组(即 ["HTML", "CSS", "JavaScript", "Vue", "React"])。
也就是说,如果数组有多个引用,只有被重新赋值的那个引用会指向空数组,其他引用保持不变。如果我们的目的是修改原始数组本身,那么这种方法可能不适用。
注意: 如果数组是使用 const 声明的,我们不能使用 arr = []; 的方式,因为 const 声明的变量不能被重新赋值。对于使用 const 声明的数组,我们应该使用修改数组内容的方法,比如 length = 0 或 splice()。
使用 splice() 方法
在 JavaScript 中,我们还可以使用数组的 splice() 方法来清空数组。splice() 方法可以通过删除从指定索引开始的所有元素来清空数组,它也会修改原始数组。
语法:
arr.splice(0, arr.length)说明:
第一个参数 0 表示从数组的第一个元素(索引为 0)开始删除。
第二个参数 arr.length 表示要删除的元素数量,即删除数组中的所有元素。
示例 4:使用 splice() 方法清空数组
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script>
const arr = ["HTML", "CSS", "JavaScript", "Vue", "React"];
// 清空数组
arr.splice(0, arr.length);
console.log(arr);
console.log(arr.length);
</script>
</body>
</html>运行结果如下。
[]
0分析:
arr.splice(0, arr.length); 会修改 arr 数组本身,并删除所有元素。与 length = 0 类似,这种方法也会影响所有指向该数组的引用。
