JavaScript 如何删除数组元素

末尾删除

通过改变数组长度实现删除动作。

var ar = [1, 2, 3, 4, 5, 6];

ar.length = 4; // set length to remove elements
console.log( ar ); // [1, 2, 3, 4]

通过 pop 方法逐个删除,返回被删除的元素。

var ar = [1, 2, 3, 4, 5, 6];

ar.pop(); // returns 6

console.log( ar ); // [1, 2, 3, 4, 5]

头部删除

通过 shift 方法逐个删除,返回被删除的元素。

var ar = ['zero', 'one', 'two', 'three'];

ar.shift(); // returns "zero"

console.log( ar ); // ["one", "two", "three"]

splice

splice 具体使用可看 MDN 文档。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
var removed = arr.splice(2,2);

通过循环或者特定下标删除特定位置的元素。

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];

for( var i = 0; i < arr.length; i++){ 

    if ( arr[i] === 5) { 

        arr.splice(i, 1); 
    }

}

//=> [1, 2, 3, 4, 6, 7, 8, 9, 0]

filter

filter 方法返回过滤后的新数组,不会影响原数组,具体使用可看 MDN 文档。

var array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
var filtered = array.filter(function(value, index, arr){ 
    return value > 5;
});
//filtered => [6, 7, 8, 9]
//array => [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

Lodash 库删除方法

这个只是库方法的使用,具体原理可以看源码实现,不具体展开。

var array = [1, 2, 3, 4];var evens = _.remove(array, function(n) { return n % 2 === 0;});console.log(array);// => [1, 3]console.log(evens);// => [2, 4]

手写删除方法

这个更多的是跟业务配套需要而封装的方法。

function arrayRemove(arr, value) { 

    return arr.filter(function(ele){ 
        return ele != value; 
    });
}

var result = arrayRemove(array, 6);
// result = [1, 2, 3, 4, 5, 7, 8, 9, 0]

delete 操作符

副作用是不会改变原数组的长度,delete 只会置为 undefined,这骚操作很少用。

var ar = [1, 2, 3, 4, 5, 6];

delete ar[4]; // delete element with index 4

console.log( ar ); 

// [1, 2, 3, 4, undefined, 6]

alert( ar ); 

// 1,2,3,4,,6

清除或者重置数组

调整数组长度。

var ar = [1, 2, 3, 4, 5, 6];

console.log(ar); 
// Output [1, 2, 3, 4, 5, 6]

ar.length = 0;

console.log(ar); 

// Output []

原文:https://love2dev.com/blog/javascript-remove-from-array/ /p>