有没有一种方法可以从 JavaScript 数组中移除一个元素?
给定一个数组:
var ary = ['three', 'seven', 'eleven'];
我想要做类似这样的事情:
removeItem('seven', ary);
我研究了splice()
,但那只能按位置号删除,我需要一种可以按值删除项目的方法。
有没有一种方法可以从 JavaScript 数组中移除一个元素?
给定一个数组:
var ary = ['three', 'seven', 'eleven'];
我想要做类似这样的事情:
removeItem('seven', ary);
我研究了splice()
,但那只能按位置号删除,我需要一种可以按值删除项目的方法。
indexOf
是一种选项,但其实现基本上是在整个数组中搜索值,因此随着数组大小的增加,执行时间会增加。 (我猜测每个浏览器都是这样,我只检查了Firefox)。var index={'three':0, 'seven':1, 'eleven':2};
您可以使用Lodash的_.remove
函数来实现此操作。
var array = ['three', 'seven', 'eleven'];
var evens = _.remove(array, function(e) {
return e !== 'seven';
});
console.log(evens);
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>
您可以使用 without
或从 Lodash 中 pull
:
const _ = require('lodash');
_.without([1, 2, 3, 2], 2); // -> [1, 3]
var deleteMe = function( arr, me ){
var i = arr.length;
while( i-- ) if(arr[i] === me ) arr.splice(i,1);
}
var arr = ["orange","red","black", "orange", "white" , "orange" ];
deleteMe( arr , "orange");
现在arr的值为["red", "black", "white"]。
非破坏性删除:
function removeArrayValue(array, value)
{
var thisArray = array.slice(0); // copy the array so method is non-destructive
var idx = thisArray.indexOf(value); // initialise idx
while(idx != -1)
{
thisArray.splice(idx, 1); // chop out element at idx
idx = thisArray.indexOf(value); // look for next ocurrence of 'value'
}
return thisArray;
}
我使用了最受欢迎的选项,创建了一个函数,可以使用另一个不需要的单词数组来清理一个单词数组:
function cleanArrayOfSpecificTerms(array,unwantedTermsArray) {
$.each(unwantedTermsArray, function( index, value ) {
var index = array.indexOf(value);
if (index > -1) {
array.splice(index, 1);
}
});
return array;
}
执行以下操作:
var notInclude = ['Not','No','First','Last','Prior','Next', 'dogs','cats'];
var splitTerms = ["call", "log", "dogs", "cats", "topic", "change", "pricing"];
cleanArrayOfSpecificTerms(splitTerms,notInclude)
let arr = [5, 15, 25, 30, 35];
console.log(arr); //result [5, 15, 25, 30, 35]
let index = arr.indexOf(30);
if (index > -1) {
arr.splice(index, 1);
}
console.log(arr); //result [5, 15, 25, 35]
delete
的变量 - 它会在数组中留下一个空洞,因为它不会重新索引删除项后的元素。> Array.prototype.remove=function(v){
... delete this[this.indexOf(v)]
... };
[Function]
> var myarray=["3","24","55","2"];
undefined
> myarray.remove("55");
undefined
> myarray
[ '3', '24', , '2' ]
var ary = ['three', 'seven', 'eleven'];
var index = ary.indexOf(item);//item: the value which you want to remove
//Method 1
ary.splice(index,1);
//Method 2
delete ary[index]; //in this method the deleted element will be undefined
var remove = function(array, value) {
var index = null;
while ((index = array.indexOf(value)) !== -1)
array.splice(index, 1);
return array;
};
Array.filter()
翻译为 "数组过滤",它是 JavaScript 中的一个数组方法。该方法可用于创建一个新数组,其中包含原始数组中满足特定条件的所有元素。使用该方法需要提供一个回调函数,该函数接受三个参数:当前元素、元素索引和数组本身。回调函数应返回一个布尔值,指示当前元素是否应包含在新数组中。 - Eric Hodonsky