javascript - 将字符串和数字数组转换为数字数组
javascript - convert an array of strings and numbers to an array of numbers
我有一个字符串和数字数组。我需要将所有项目转换为数字,即:
var a = ["42.00", 33, 12.02, "30", 10];
转换为:
[42.00, 33, 12.02, 30, 10]
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);
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]
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.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/
我相信这可以以某种方式写得更好,但效果很好。
为了后备兼容性目的:
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):
fiddle::http://jsfiddle.net/kndgcty8/1/
真的,为这么简单的事情写一段完整的代码有什么用?这就是您所需要的:
var a = ["42.00", 33, 12.02, "30", 10]
a.map(Number) // returns [42, 33, 12.02, 30, 10]
(注意 JavaScript 中的所有数字都是 64 位浮点数,没有必要将它们显式写为 float)
我有一个字符串和数字数组。我需要将所有项目转换为数字,即:
var a = ["42.00", 33, 12.02, "30", 10];
转换为:
[42.00, 33, 12.02, 30, 10]
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);
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]
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.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/
我相信这可以以某种方式写得更好,但效果很好。
为了后备兼容性目的:
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):
fiddle::http://jsfiddle.net/kndgcty8/1/
真的,为这么简单的事情写一段完整的代码有什么用?这就是您所需要的:
var a = ["42.00", 33, 12.02, "30", 10]
a.map(Number) // returns [42, 33, 12.02, 30, 10]
(注意 JavaScript 中的所有数字都是 64 位浮点数,没有必要将它们显式写为 float)