js 删除数组的几种方法小结


在JavaScript中,删除数组中的元素通常意味着移除数组中的某个或多个元素,但需要注意的是,JavaScript的数组(Array)是动态的,但直接“删除”元素(如C或Java中的删除操作)并不直接支持,因为数组的长度是固定的概念在JavaScript中不适用。不过,我们可以通过几种方法来实现类似“删除”的效果:

1. **使用`splice()`方法**

`splice()`方法可以在任意的位置给数组添加或删除项目,并返回被删除的项目。这是最常用的“删除”数组元素的方法。


   let arr = [1, 2, 3, 4, 5];
   arr.splice(2, 1); // 从索引2开始,删除1个元素
   console.log(arr); // 输出: [1, 2, 4, 5]
   

2. **使用`filter()`方法**

`filter()`方法创建一个新数组,其包含通过所提供函数实现的测试的所有元素。虽然这不是直接删除,但可以用来创建一个不包含特定元素的新数组。


   let arr = [1, 2, 3, 4, 5];
   let newArr = arr.filter(item => item !== 3); // 过滤掉值为3的元素
   console.log(newArr); // 输出: [1, 2, 4, 5]
   

3. **设置`length`属性**

通过直接设置数组的`length`属性,可以删除数组末尾的一个或多个元素。但这种方法不能用于删除数组中间的元素。


   let arr = [1, 2, 3, 4, 5];
   arr.length = 3; // 删除索引3和4的元素
   console.log(arr); // 输出: [1, 2, 3]
   

4. **使用`delete`操作符**

`delete`操作符可以用来删除对象的属性。虽然数组在JavaScript中也是对象,但使用`delete`删除数组元素会留下“空洞”(即`undefined`值),且数组的`length`属性不会改变。


   let arr = [1, 2, 3, 4, 5];
   delete arr[2]; // 删除索引为2的元素
   console.log(arr); // 输出: [1, 2, undefined, 4, 5]
   console.log(arr.length); // 输出: 5
   

注意:这种方法通常不推荐用于数组,因为它会破坏数组的连续性和`length`属性的预期用途。

5. **使用`pop()`和`shift()`方法**

虽然`pop()`和`shift()`方法不是直接用来“删除”数组中特定位置的元素,但它们分别用于删除数组的最后一个元素和第一个元素,并返回被删除的元素。


   let arr = [1, 2, 3, 4, 5];
   arr.pop(); // 删除最后一个元素
   console.log(arr); // 输出: [1, 2, 3, 4]

   arr.shift(); // 删除第一个元素
   console.log(arr); // 输出: [2, 3, 4]
   

总结,虽然JavaScript没有直接的“删除”数组元素的方法,但通过上述几种方式,我们可以实现类似的效果。选择哪种方法取决于你的具体需求,比如是否需要保留原数组、是否需要返回被删除的元素等。