자바스크립트에서 숫자를 출력할 때, 3자리마다 콤마를 찍고 출력하는 방법을 소개합니다. 구글링해보면 정규식을 이용하여 3자리 마다 콤마를 넣거나, toLocaleString()
로 특정 국가의 숫자 단위로 출력하여 콤바를 넣는 방식을 많이 사용하고 있습니다. 그 외에, for 반복문을 이용하여 직접 구현하는 방법도 있습니다.
1. 정규식을 이용하여 3자리마다 콤마 넣기
다음과 같이 정규식을 이용하여 3자리마다 콤마를 넣을 수 있습니다.
let price = 1000000;
let result = price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
console.log(result);
price = 1000000.123;
result = price.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
console.log(result);
Output:
1,000,000
1,000,000.123
2. toLocaleString()을 이용하여 3자리마다 콤마 넣기
toLocaleString()
는 인자로 전달한 Locale의 표현 방식으로 숫자를 출력합니다. 인자를 전달하지 않으면 Default locale이 사용됩니다.
미국이나 한국은 3자리마다 콤마를 넣습니다. 따라서 Locale en-US
나 ko-KR
을 인자로 전달하면 3자리마다 콤마가 들어간 문자열을 얻을 수 있습니다. 주의할 점은 Locale에 따라 결과가 달라질 수 있다는 것입니다. Locale ar-EG
는 아랍어인데, 출력되는 문자열을 보시면 아라비아 숫자로 표현되지 않습니다.
const price = 1000000;
let result = price.toLocaleString();
console.log(result);
result = price.toLocaleString('en-US');
console.log(result);
result = price.toLocaleString('ko-KR');
console.log(result);
result = price.toLocaleString('ar-EG');
console.log(result);
Output:
1,000,000
1,000,000
1,000,000
١٬٠٠٠٬٠٠٠
그리고 위의 예제들은 아래와 같이 Number 타입의 toLocaleString()
함수를 사용하는 것이기 때문에, 문자열 타입 객체에 toLocaleString()
를 호출해도 콤마가 입력되지 않습니다.
interface Number {
/**
* Converts a number to a string by using the current or specified locale.
* @param locales A locale string or array of locale strings that contain one or more language or locale tags. If you include more than one locale string, list them in descending order of priority so that the first entry is the preferred locale. If you omit this parameter, the default locale of the JavaScript runtime is used.
* @param options An object that contains one or more properties that specify comparison options.
*/
toLocaleString(locales?: string | string[], options?: Intl.NumberFormatOptions): string;
}
3. for 반복문으로 직접 함수 구현하여 콤마 넣기
다음과 같이 반복문으로 숫자를 순회하면서 3자리마다 콤마를 넣을 수 있습니다. 함수 안에서는 문자열로 변환하여 콤마를 넣기 때문에, 리턴 값은 문자열이 됩니다.
function insertCommas(n) {
// get stuff before the dot
let s1 = n.toString();
var d = s1.indexOf('.');
var s2 = d === -1 ? s1 : s1.slice(0, d);
// insert commas every 3 digits from the right
for (var i = s2.length - 3; i > 0; i -= 3)
s2 = s2.slice(0, i) + ',' + s2.slice(i);
// append fractional part
if (d !== -1)
s2 += s1.slice(d);
return s2;
}
let result = insertCommas(1000000);
console.log(result);
result = insertCommas('1000000');
console.log(result);
result = insertCommas(1000000.123);
console.log(result);
result = insertCommas('1000000.123');
console.log(result);
Output:
1,000,000
1,000,000
1,000,000.123
1,000,000.123
Loading script...
Related Posts
- Javascript - 현재 날짜/시간을 항상 한국 기준으로 가져오기
- Javascript - 문자열 사이에 문자 넣기
- Javascript - 버튼 활성화/비활성화 시키는 방법
- Javascript - 버튼 이름 변경하기
- Javascript - div 안의 내용 가져오기, 변경, 추가, 삭제
- Javascript - <ol>, <ul>에 <li> 동적 추가, 삭제
- Javascript - div 생성, 추가, 삭제 방법
- Javascript - 테이블 행(tr) 숨기기, 보이기
- Javascript - div에 링크 거는 방법
- Javascript - 자식 요소(element) 개수 확인
- Javascript - 요소(element) 복사, 붙여넣기
- Javascript - div에 클릭 이벤트(onclick) 설정 방법
- Javascript - 체크박스 선택/해제 시, 텍스트박스 활성화/비활성화
- Javascript - input 숫자만 입력받도록 설정
- Javascript - 자식 노드 모두 제거
- Javascript - 체크박스 선택, 해제 방법
- Javascript - input text 값 가져오기
- JavaScript - 문자열을 배열(Array)로 변환
- JavaScript - 특정 문자열의 포함 여부 확인 (includes, 정규표현식)
- JavaScript - 문자열 비교 방법, 5가지
- JavaScript - 문자열 바꾸기(replace, 정규식 치환)
- JavaScript - 배열 전체 출력 (for, forEach, for in, for of)
- JavaScript - 한번만 실행되는 함수 (once: true)
- JavaScript - 선택된 checkbox 값 가져오기
- JavaScript - element(버튼, div) 보이기 숨기기
- JavaScript - 숫자를 배열로 변경하는 방법
- JavaScript - div, 태그 안의 내용 가져오기
- JavaScript - 부모, 형제, 자식 element 찾기
- JavaScript - 클래스 이름으로 element 찾는 방법
- JavaScript Array find() 함수
- JavaScript Array splice() 함수
- JavaScript의 contains() 함수
- JavaScript sort() 함수, 예제 소개
- JavaScript - Set 생성 및 초기화
- JavaScript Set add() 함수