2016-06-08 96 views
0

我有一个项目,我需要循环通过一个浮点数组。此项目的目标是将每个单独的浮点格式设置为这种特定格式“.XXX”,其中X是数字。如果数字以0开头,那么它应该被省略。例如:0.2867应格式化为.286,或者如果您有一个类似1.2的数字,则应格式化为1.200。如果数组中的元素不是数字,例如“ - ”,那么它应该被格式化为.000Javascript阵列整数阵列格式

下面是我为这个项目迄今为止的代码,但我坚持:

$(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

你可以推'arrayElement'到一个新的数组,从'格式返回数组()'调用 – guest271314

+0

我不想使用'arrayElement'一些其他步骤不同的变量。使用'parseInt()'将删除小数值,只留下'.toPrecision()'的整数,即'0'或'1'。 –

+0

这里不清楚“格式”是什么意思。例如,浮点数中的前导零不能被“格式化”,除非“格式化”意味着您将数字转换为字符串进行显示。如果这意味着什么,那么首先将每个数字格式化为一个字符串,然后对其中的部分进行操作。 – kinakuta

回答

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); 

工作codepen:http://codepen.io/gpincheiraa/pen/oLjPvX

0

您可以使用isNaN检查"-";删除parseInt=<=运营商;创建一个数组来推送值,从formatter()返回数组。

编辑,更新

正如@JonathanLonowski建议,也尝试.toPrecision().toFixed()返回预期的结果。

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)