2016-07-19 3 views
1

이 간단한 JavaScript 함수는 d3-format을 사용하여 문자열과 통화 코드를 형식 번호로 변환합니다.d3 형식의 숫자로 천 단위 구분 기호가 표시되지 않습니다.

import * as d3Format from 'd3-format'; 
import d3 from 'd3'; 

export const toCurrency = (number, currencyCode) => { 
    const formatDef = { 
    "decimal": ".", 
    "thousands": ",", 
    "grouping": [3], 
    "currency": [convertCodeToSymbol(currencyCode), ""]}; 
    const locale = d3Format.formatLocale(formatDef); 
    return locale.format("($.2f")(number); 
}; 

const convertCodeToSymbol = (currencyCode) => { 
    const conversions = { 
     "USD": "$", 
     "EUR": "€", 
     "GBP": "£" 
    }; 
    return conversions[currencyCode] ? conversions[currencyCode] : currencyCode; 
}; 

표시되지 않는 천 단위 구분 기호를 제외하고 작동합니다. 감안할 때 (1999, "USD") "$ 1999.00"을 돌려줍니다. 나는 문서를 두 번 확인했지만 수천 및 그룹화 속성이 모두 올바르게 보입니다. 나는 "$ 1,999.00"을 얻으려고 노력하고있다.

(주 가져 오기 D3 라인은 필요하지 않습니다,하지만 난 그냥 내가. 내가 설치 한 라이브러리의 일부가 누락되지 않았 확인하기 위해 포함 모두 NPM과 D3와 D3-형식입니다.)

답변

3

thousands 속성을 제공하면 그룹 구분 기호 은 서식 지정을 요청할 때처럼으로 보입니다. 이러한 같은

쉼표 (,) 옵션은 그룹 구분 기호의 사용을 가능하게 : 실제로 그룹 형식의 출력을 위해, 당신은 locale.format(specifier) 제공 지정자 문자열로 (,) 옵션 쉼표를 포함해야 수천명의 쉼표. 코드에 대한

이 트릭을 할해야

return locale.format("($,.2f")(number); 

로 지정 문자열을 변경하는 것을 의미한다.

console.log(d3.format(".2f")(1999)); // 1999.00 
 
console.log(d3.format(",.2f")(1999)); // 1,999.00
<script src="https://d3js.org/d3.v4.js"></script>

+0

아 물론 :

본 실시 예

차이를 나타낸다. 이제 내 테스트가 끝났어, 고마워! – Mike

관련 문제