我有一个字符串数组。
a = ['1', 'car', '2'];
我只想解析可解析的元素,我的目标是:
a = [1, 'car', 2];
我该怎么做? 当我尝试解析[1]时会发生什么?
答案 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?
答案 3 :(得分:-2)
数组构造:
a[0] = 1;
a[1] = 'car';
a[2] = 2;
您需要一个索引数组。