Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从不包含“的字符串数组中删除所有元素”;在;_Javascript_Jquery_Arrays - Fatal编程技术网

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

Javascript 从不包含“的字符串数组中删除所有元素”;在;,javascript,jquery,arrays,Javascript,Jquery,Arrays,我需要删除数组中所有不包含大写“in”的元素 我的想法是使用for循环遍历数组,并将其中包含的所有值写入另一个数组 是否有一种方法可以做到这一点,而无需写入新数组,只需从当前数组中删除那些不匹配的项 下面是我计划如何做的代码: arrTwo = []; for(var i = 0; i<arr.length; i++){ if(arr[i].indexOf('IN') > -1) arrTwo.push[arr[i]]; } arrTwo=[]; 对于(var i=0;i

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

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

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

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

arrTwo = [];

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

这里有一个非常好的线程,它有两种方法可以实现这一点。如果没有以正确的方式删除数组中的元素,则该元素将是未定义的,而不是实际删除的。
.spilce()
方法就是您想要研究的

您可以使用ES5方法:

使用ES6,可以简化为:

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

我会使用
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);
var testArray=['这一个包含在','这一个没有'];
函数过滤器阵列(arr){
var i=阵列长度;
//--因为我们正在修改数组,所以以相反的顺序循环数组。
而(我--){
if(arr[i].indexOf('IN')<0){
//--接头将移除不匹配的元件
阵列拼接(i,1);
}
}
}
过滤器阵列(测试阵列);
document.body.innerText=JSON.stringify(testArray);

jsfdle:

有一个为数组对象定义的函数,您可以使用它。它将创建一个新的过滤阵列,尽管这是惊人的。如果它包含IN或NN怎么办?@MrGuru那么您可以使用
~s.indexOf(“IN”)| | ~s.indexOf(“NN”)
;或正则表达式:
/[IN]N/.test(str)
/IN | NN/.test(str)
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);