我需要删除数组中不包含" IN"的所有元素。用大写字母表示。
我怎么想这样做是用for循环遍历数组并将包含IN的所有值写入另一个数组。
有没有办法可以在不写入新数组的情况下执行此操作,只删除那些与当前数组不匹配的项目?
以下是我计划如何做的代码:
arrTwo = [];
for(var i = 0; i<arr.length; i++){
if(arr[i].indexOf('IN') > -1) arrTwo.push[arr[i]];
}
答案 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()
方法是您想要查看的方法。
答案 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/