对无法解析的内容调用 .parseInt() - JavaScript

Calling .parseInt() on something that can't be parsed - JavaScript

我有一个字符串数组。

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

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

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

我该怎么做? 当我尝试解析 a[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

或者下面的第一个 link 你可以试试这个。每当您想使用数组元素时。

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

由于问题的目的现在已经变得更加明确,因此编辑:

     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。这将解析整数和浮点数。

数组构造:

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

您需要一个索引数组。

尝试

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

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

但是,这将在 '0' 上失败,因此您需要

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

在 ES6 环境下更紧凑一些:

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