2016-06-08 2 views
0

플로트 배열을 반복해야하는 프로젝트가 있습니다. 이 프로젝트의 목적은 각 개별 플로트를이 특정 형식 인 ".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

당신은, 새로운 배열에'arrayElement'를 밀어 포맷터'에서 배열을 반환 할 수()'몇 가지 단계에 대한'arrayElement' 이외의 다른 변수를 사용하는 – guest271314

+0

내 희망을 호출합니다. 'parseInt()를 사용하면'.toPrecision()'에 대해서만 정수,'0' 또는'1' 만 남기고 10 진수 값은 제거 할 것입니다. –

+0

여기서 "형식"이 의미하는 것이 명확하지 않습니다. 예를 들어, "포맷팅"이 숫자를 표시 할 문자열로 변환한다는 의미가 아니라면 float의 선행 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)