我有这个数组“
var text = [ 1,2,"a","etf",5,"9f",12,"laks"];
我也有这个函数将遍历text []并删除字符串。它只显示数字:
var isNumber = function(){
for(var i = 0; i<text.length; i++){
if(isNaN(text[i])){
text.splice(i,1);
}
}
return text;
}
isNumber();
当我运行它时,它会删除一些字符串,而不是所有字符串......任何想法? 谢谢!
答案 0 :(得分:1)
在循环播放时,您正在从数组中删除项目。试试这个:
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;
}
答案 1 :(得分:1)
如果你可以运行ES6,那么以下就更简单了
return text.filter(t => !isNaN(t));
还有Number.isInteger,它比isNaN更受欢迎,如果需要,可以很容易地进行polyfill。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
答案 2 :(得分:0)
如果您只想过滤字符串,可以使用带过滤器的typeof
text = text.filter(function(item){
return typeof item !== 'string';
})
答案 3 :(得分:0)
可以使用过滤器返回所有数字值。
示例代码段:
var text = [1, 2, "a", "etf", 5, "9f", 12, "laks"];
function isNumber(arr) {
return arr.filter(function(value) {
return !isNaN(value)
})
}
console.log(isNumber(text))