[JavaScript]JavaScript中如何从数组中移除指定的元素对象呢?
3.69K 次浏览
2 个回答
-
在JavaScript中,数组提供了内置的
.indexOf()
和.splice()
这两个函数,我们首先可以利用indexOf
函数找到要移除元素中数组中的索引位置,然后通过.splice()
函数将这个索引位置的元素移除,具体实现代码如下:const array = [2, 5, 9]; console.log(array); const index = array.indexOf(5); if (index > -1) { array.splice(index, 1); } // array = [2, 9] console.log(array);
注:.splice()的第二个参数是要删除的元素数量。特别注意:
.splice()
函数将在适当的位置修改数组,并返回一个不包含已删除元素的新数组。以下是封装的两个从数组中移除指定元素的函数,其中第1个函数
removeItemOnce()
是移除数组中第一个匹配到的元素,而第2个函数removeItemAll()
则是移除数组中所有匹配的指定元素,具体代码如下:function removeItemOnce(arr, value) { var index = arr.indexOf(value); if (index > -1) { arr.splice(index, 1); } return arr; } function removeItemAll(arr, value) { var i = 0; while (i < arr.length) { if (arr[i] === value) { arr.splice(i, 1); } else { ++i; } } return arr; }
调用示例如下:
console.log(removeItemOnce([2,5,9,1,5,8,5], 5)) //返回:[2,9,1,5,8,5] console.log(removeItemAll([2,5,9,1,5,8,5], 5)) //返回:[2,9,1,8]
-
在JavaScript中,数组还提供了
.filter()
函数,此函数会根据过滤条件创建一个新的数组对象,而不会修改原来的数组对象,具体实现如下:var value = 3; var arr = [1, 2, 3, 4, 5, 3]; arr = arr.filter(function(item) { return item !== value; }) console.log(arr); // [ 1, 2, 4, 5 ]
注:低版本的浏览器(如:IE9以下,Firefox 1.5以下等)并不支持
.filter()
函数,你可以使用[polyfill][1]
作浏览器的兼容处理。ES6的语法实现如下:
let value = 3 let arr = [1, 2, 3, 4, 5, 3] arr = arr.filter(item => item !== value) console.log(arr) // [ 1, 2, 4, 5 ]
ES7实现移除多个指定元素的方法如下:
let forDeletion = [2, 3, 5] let arr = [1, 2, 3, 4, 5, 3] arr = arr.filter(item => !forDeletion.includes(item)) console.log(arr) // [ 1, 4 ]