2016-06-08 151 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)