在无法解析的东西上调用.parseInt() - JavaScript

时间:2015-01-31 11:39:38

标签: javascript parsing

我有一个字符串数组。

a = ['1', 'car', '2'];

我只想解析可解析的元素,我的目标是:

a = [1, 'car', 2];

我该怎么做? 当我尝试解析[1]时会发生什么?

4 个答案:

答案 0 :(得分:2)

尝试

a.map(function(x) { return +x || x; })

+x会尝试将值转换为数字,如果失败则返回NaN。这是假的,并导致||的RHS被评估,返回原始值。

但是,这会在'0'失败,因此您需要执行

a.map(function(x) { return isNaN(x) ? x : +x; }

在ES6环境中它更紧凑:

a.map(x => isNaN(x) ? x : +x);

答案 1 :(得分:0)

由于问题的目的现在变得更加清晰,编辑:



     var a = ["1", 'car', 2];
     a = a.map(function(element) {
       //check if element is a number and not NaN or empty string
       if (!isNaN(element) && element != "") {
          return parseInt(element, 10);
       }
       else
       {
          return element;
       }
     });

     document.body.textContent = a;




这会遍历你的数组。测试数组元素是否为数字,如果可以,则转换数字。我正在使用Array.prototype.map。请注意,这只会过滤整数。如果要过滤浮点数,请使用parseFloat。这将解析整数和浮点数。

答案 2 :(得分:-1)

为此你必须循环每个值并检查解析int是否。这是示例并创建另一个数组。

var count_a = {};
for(var i=0; i<a.length;i++)
    { 
        if (!isNaN(a[i]))
        { 
           count_a[i] = parseInt(a[i], 10);
        }
        else { count_a[i] = a[i] }
    }
    a = count_a

或作为下面的第一个链接,您可以试试这个。无论何时你想使用数组元素。

var a = ['1','2','3'];
var result = a.map(function (x) { 
    return parseInt(x, 10); 
});

How to convert all elements in an array to integer in JavaScript?

Parsing every element of an array as an integer

答案 3 :(得分:-2)

数组构造:

a[0] = 1;
a[1] = 'car';
a[2] = 2;

您需要一个索引数组。