我有一个字符串数组,我需要将其转换为带小数的数字数组。字符串数组如下所示:
var array = [" 169.70", " 161.84", " 162.16", " 176.06", " 169.72", " 170.77", " 172.74", " 175.73", " 0.00", " 0.00", " 0.00", " 0.00"]
我创建了一个简短函数来解析每个数组元素:
function parseFloatArray(array) {
var parsedArray = [];
for (var i = 0; i < array.length ; i++) {
parsedArray[i] = parseFloat(array[i]);
parsedArray.push(parsedArray[i]);
console.log(parsedArray[i]);
};
return parsedArray;
}
记录array.length给出的值为12. for循环中的log也返回12个单独的值。但是,console.log(parsedArray)给了我以下数组,长度为13(注意尾随零):
[169.7, 161.84, 162.16, 176.06, 169.72, 170.77, 172.74, 175.73, 0, 0, 0, 0, 0]
关于我如何改进这个功能以及为什么它会追加零的任何想法,尽管所有日志显示12个值?
答案 0 :(得分:2)
它可能是一个很好的使用数组方法map,它返回从函数返回的每个项的值的新数组(例如,parseFloat):
var array= [" 169.70", " 161.84", " 162.16", " 176.06", " 169.72",
" 170.77", " 172.74", " 175.73", " 0.00", " 0.00", " 0.00", " 0.00"];
var parsedArray= array.map(parseFloat);
>>>value: (Array)
[169.7, 161.84, 162.16, 176.06, 169.72, 170.77, 172.74, 175.73, 0, 0, 0, 0];
如果你必须支持IE&lt; 9,你可以提供地图的子 -
Array.prototype.map= Array.prototype.map || function(fun, scope){
var T= this, L= T.length, A= Array(L), i= 0;
if(typeof fun== 'function'){
while(i<L){
if(i in T){
A[i]= fun.call(scope, T[i], i, T);
}
++i;
}
return A;
}
}
答案 1 :(得分:0)
只需将它们放一次:
function parseFloatArray(array) {
var parsedArray = [];
for (var i = 0; i < array.length; i++) {
parsedArray.push(parseFloat(array[i]));
}
return parsedArray;
}