带有for循环+条件的Javascript数组删除不必要的元素

时间:2016-08-25 08:51:00

标签: javascript arrays

我循环遍历一个数组,由于某种原因,循环+条件+拼接正在删除不应删除的索引并保留其他应删除的索引,有人可以指出我的错误是什么错误语法?

arr2 = ['agg', 45, 'ghj', ' ', 9999, 12, 'aa', 'bb'];

function returnAlphanumeric(array){
    for (var i=0; i<array.length; i++){
        if (typeof array[i] !== "number"){
            array.splice(i, 1);
        }
    }
    console.log('Your new array is: '+array);
}
returnAlphanumeric(arr2);

2 个答案:

答案 0 :(得分:3)

你可以试试这个,你必须减少计数器,因为拼接会使你的数组​​发生变化吗?

function returnAlphanumeric(array){
    for (var i=0; i<array.length; i++){
        if (typeof array[i] !== "number"){
            array.splice(i, 1);
            i--;
        }
    }
    console.log('Your new array is: '+array);
}

答案 1 :(得分:3)

为什么不使用过滤方法:

arr2 = ['agg', 45, 'ghj', ' ', 9999, 12, 'aa', 'bb'];
arr2.filter(a => typeof a === "number"); // 45, 9999, 12