从字符串数组中删除不包含“&;in&;”的所有元素

Remove all elements from array of strings that do not contain "IN"

本文关键字:in 元素 数组 字符串 删除 包含      更新时间:2023-09-26

我需要删除数组中所有不包含大写" in "的元素

我的想法是用for循环遍历数组,并将包含IN的所有值写入另一个数组。

是否有一种方法,我可以做到这一点,而不写入一个新的数组,只是从当前数组中删除那些不匹配的项目?

下面是我打算怎么做的代码:

arrTwo = [];
for(var i = 0; i<arr.length; i++){
    if(arr[i].indexOf('IN') > -1) arrTwo.push[arr[i]];
}

您可以使用ES5 filter方法:

arr = arr.filter(function(s){
    return ~s.indexOf("IN");
});

使用ES6的箭头函数,可以简化为:

arr = arr.filter(s=>~s.indexOf("IN"));

这是一个非常好的线程,它有几个方法来完成这一点。如果没有以正确的方式删除数组中的元素,那么该元素将是未定义的,而不是实际删除的。.spilce()方法是您想要研究的。

在JavaScript中删除数组元素- delete vs splice

我将使用splice()方法:

var testArray = [ 'this one contains IN', 'this one does not' ];
function filterArray ( arr ) {
    var i = arr.length;
    //-- Loop through the array in reverse order since we are modifying the array.
    while (i--) {
        if (arr[i].indexOf('IN') < 0) {
            //-- splice will remove the non-matching element
            arr.splice(i, 1);
        }
    }
}
filterArray( testArray );
document.body.innerText = JSON.stringify(testArray);

JSFiddle: http://jsfiddle.net/5DW8L/1/