我有一个项目,我需要循环遍历一系列浮点数。此项目的目标是将每个浮点数格式化为此特定格式“.XXX”,其中X是数字。如果数字以0引出,则应省略。例如:0.2867
应格式化为.286
,或者如果您有1.2
这样的数字,则应将其格式化为1.200
。如果数组中的元素不是数字,例如“ - ”,则应将其格式化为.000
。
到目前为止,这是我项目的代码,但我被困住了:
$( document ).ready(function() {
var statsArray = [0.2867, 0.833, 1.576, 0.19, 0.688, 0.22, 0.572, .167, 0.643, 0.921, "-", "-", 0.222, 1.466789, 0.1, 0.714, 1.115];
function formatter()
{
var numElements = statsArray.length;
for (var m=0; m <= numElements; m++)
{
var arrayElement = statsArray[m];
console.log ("original element is " + arrayElement);
arrayElement = parseInt(arrayElement, 10);
console.log ("after parseInt element is " + arrayElement);
arrayElement = arrayElement.toPrecision(3);
console.log ("after toPrecision element is " + arrayElement);
}
}
formatter();
});
任何有关下一步或我缺少的建议都将不胜感激!谢谢!
答案 0 :(得分:0)
试试这个:
var statsArray = [12.2,0.2867, 0.833, 1.576, 0.19, 0.688, 0.22, 0.572, .167, 0.643, 0.921, "-", "-", 0.222, 1.466789, 0.1, 0.714, 1.115];
statsArray = statsArray.map(function(number){
number = Number(number).toFixed(3);
if(number === 'NaN') return '.000';
return number[0] === '0'? number.slice(1) : number
});
console.log(statsArray);
答案 1 :(得分:0)
您可以使用isNaN
来检查"-"
;移除parseInt
运营商处的=
和<=
;创建一个数组来推送值,从formatter()
返回数组。
修改,更新
正如@JonathanLonowski所建议的那样,尝试用.toFixed()
替换.toPrecision()
来返回预期结果。
var statsArray = [0.2867, 0.833, 1.576, 0.19, 0.688, 0.22, 0.572, .167, 0.643, 0.921, "-", "-", 0.222, 1.466789, 0.1, 0.714, 1.115];
function formatter(arr) {
for (var m = 0, res = []; m < arr.length; m++) {
var arrayElement = statsArray[m];
console.log("original element is " + arrayElement);
if (!isNaN(arrayElement)) {
res.push(arrayElement.toFixed(3))
} else {
if (arrayElement === "-") {
res.push(".000")
}
}
}
return res
}
var result = formatter(statsArray);
console.log(result)
&#13;