Javascript 从不包含“的字符串数组中删除所有元素”;在;
我需要删除数组中所有不包含大写“in”的元素 我的想法是使用for循环遍历数组,并将其中包含的所有值写入另一个数组 是否有一种方法可以做到这一点,而无需写入新数组,只需从当前数组中删除那些不匹配的项 下面是我计划如何做的代码: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
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);