末尾删除
通过改变数组长度实现删除动作。
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>