javascript - 将字符串和数字数组转换为数字数组

时间:2015-04-01 09:15:30

标签: javascript numbers double-quotes

我有一个字符串和数字数组。我需要将所有项目转换为数字,即:

var a = ["42.00", 33, 12.02, "30", 10];

转换为:

[42.00, 33, 12.02, 30, 10]

5 个答案:

答案 0 :(得分:1)

对于后备兼容目的:

var a = ["42.00", 33, 12.02, "30", 10];
var out;

if (typeof(Array.prototype.map == 'function')) {
    out = a.map(function(el){ return typeof(el) !== 'number' ? parseFloat(el) : el });
}
else {
    out = [];
    for (var i = 0; i < a.length; ++i) {
        out[i] = typeof(a[i]) !== 'number' ? parseFloat(a[i]) : a[i];   
    }
}

console.log(out);

如果元素已经是一个数字,它就不会解析它,否则就会解析它。

如果未定义.map函数,它将使用常规for循环进行。这应该是因为某些浏览器不支持某些ECMA功能(如IE9):

enter image description here

小提琴:: http://jsfiddle.net/kndgcty8/1/

答案 1 :(得分:0)

&#13;
&#13;
var a = ["42.00", 33, 12.02, "30", 10];
var b=new Array();

for(i=0;i<a.length;i++)
  b[i]=parseFloat(a[i]);

alert(a);
alert(b);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

JavaScript数组map方法:

var a = ["42.00", 33, 12.02, "30", 10]
var b = a.map(function (elem) {
    return parseInt(elem, 10)
})
console.log(b)
// [42, 33, 12, 30, 10]

JSFiddle

答案 3 :(得分:0)

var a = ["42.00", 33, 12.02, "30", 10];
var b = [];
a.forEach(function(num){
    b.push(parseFloat(num));
});
console.log(b);
// [42, 33, 12, 30, 10]

或者将原型方法添加到Array:

Array.prototype.toInt = function (a){
    var b = [];
    this.forEach(function(num){
        b.push(parseFloat(num));
    });
    return b;
}
var a = ["42.00", 33, 12.02, "30", 10];
console.log(a.toInt());

https://jsfiddle.net/0okLL93m/

我确信这可以用某种方式写得更好,但效果还不错。

答案 4 :(得分:0)

真的,为这么简单的事情写一整段代码是什么意思?这就是你所需要的:

var a = ["42.00", 33, 12.02, "30", 10]

a.map(Number) // returns [42, 33, 12.02, 30, 10]

(请注意,JavaScript中的所有数字都是64位浮点数,没有必要将它们显式写为float)