为什么我的函数没有从数组中删除所有字符串??javascript

为什么我的函数没有从数组中删除所有字符串??javascript,javascript,Javascript,我有这个数组“ 我还有一个函数,它将遍历文本[]并删除字符串。它将只显示数字: var isNumber = function(){ for(var i = 0; i<text.length; i++){ if(isNaN(text[i])){ text.splice(i,1); } } return text; } isNumber(); var isNumber=function(){

我有这个数组“

我还有一个函数,它将遍历文本[]并删除字符串。它将只显示数字:

var isNumber = function(){
    for(var i = 0; i<text.length; i++){
        if(isNaN(text[i])){
            text.splice(i,1);          
        }
    }
    return text;
}
isNumber();
var isNumber=function(){

对于(var i=0;i,在循环数组时,您正在从数组中删除项。请尝试以下操作:

var isNumber = function(){
    for(var i = 0; i < text.length; i++){
        if(isNaN(text[i])){
            text.splice(i, 1);
            i--; // go back one step so we won't skip the item after
        }
    }
    return text;
}
var isNumber=function(){
对于(变量i=0;i
在数组中循环时,您正在从数组中删除项目。请尝试以下操作:

var isNumber = function(){
    for(var i = 0; i < text.length; i++){
        if(isNaN(text[i])){
            text.splice(i, 1);
            i--; // go back one step so we won't skip the item after
        }
    }
    return text;
}
var isNumber=function(){
对于(变量i=0;i
如果您可以运行ES6,那么下面的操作要简单得多

return text.filter(t => !isNaN(t));
还有Number.isInteger,它比isNaN更受欢迎,如果需要,可以简单地进行多边形填充。

如果您可以运行ES6,那么以下操作要简单得多

return text.filter(t => !isNaN(t));
还有Number.isInteger,它比isNaN更受欢迎,如果需要,可以简单地进行多边形填充。

如果只想筛选字符串,可以将typeof与筛选器一起使用

text = text.filter(function(item){
  return typeof item !== 'string';
})

如果只想筛选字符串,可以将typeof与筛选器一起使用

text = text.filter(function(item){
  return typeof item !== 'string';
})

可以使用筛选器返回所有为数字的值

示例代码段:

var text=[1,2,“a”,“etf”,5,“9f”,12,“laks”];
函数isNumber(arr){
返回arr.filter(函数(值){
return!isNaN(值)
})
}

log(isNumber(text))
可以使用过滤器返回所有与数字相关的值

示例代码段:

var text=[1,2,“a”,“etf”,5,“9f”,12,“laks”];
函数isNumber(arr){
返回arr.filter(函数(值){
return!isNaN(值)
})
}

console.log(isNumber(text))
或者只使用
数组。过滤器
很好,这很快。谢谢,它工作得很好!@pvg这是为了留在OP请求的上下文中。加上
过滤器
返回另一个数组。OP试图做的是更改数组本身!@ibrahimmahrir很公平,但问题的上下文也是“海报在这方面相对较新”。Idiomatic答案值得一提。或者只使用
数组。filter
很好,这很快。谢谢你,它工作得很好!@pvg这是为了留在OP请求的上下文中。加上
filter
返回另一个数组。OP试图做的是更改数组本身!@ibrahimmahrir很公平,但问题的上下文也是“海报是”在这方面相对较新。惯用的答案值得包括在内。