对无法解析的内容调用 .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);
我有一个字符串数组。
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);