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

时间:2014-06-13 22:32:10

标签: javascript jquery arrays

我需要删除数组中不包含" IN"的所有元素。用大写字母表示。

我怎么想这样做是用for循环遍历数组并将包含IN的所有值写入另一个数组。

有没有办法可以在不写入新数组的情况下执行此操作,只删除那些与当前数组不匹配的项目?

以下是我计划如何做的代码:

arrTwo = [];

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

3 个答案:

答案 0 :(得分:8)

您可以使用ES5 filter方法:

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

使用ES6 arrow functions,可以简化为:

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

答案 1 :(得分:0)

这是一个非常好的主题,有两种方法可以实现这一目标。如果不以正确的方式删除数组的元素,则该元素将被取消定义而不是实际删除。 .spilce()方法是您想要查看的方法。

Deleting array elements in JavaScript - delete vs splice

答案 2 :(得分:0)

我会使用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/