[Javascript] 숫자를 한글로 표시하는 자바스크립트
반응형
const numberUnits = ["", "일", "이", "삼", "사", "오", "육", "칠", "팔", "구"];
const tenUnits = ["", "십", "백", "천"];
const thousandUnits = ["", "만", "억", "조", "경", "해"];
// 배열 쪼개기
function chunkAtEnd(value = "", n = 1) {
value = value.replace(/[^0-9]+/g, ""); // 무조건 숫자만
const result = [];
for (let end = value.length; end > 0; end -= n) {
result.push(value.substring(Math.max(0, end - n), end));
}
return result;
}
// 4자리씩 숫자로 변환
function formatNumber(number) {
return chunkAtEnd(String(number), 4)
.reduce((acc, item, index) => {
const unit = thousandUnits[index] ?? "";
if (!Number(item)) {
return acc;
}
return `${Number(item)}${unit} ${acc}`;
}, "")
.trim();
}
// 모든 숫자 바꾸기
function formatNumberAll(number) {
return chunkAtEnd(String(number), 4)
.reduce((acc, item, index) => {
if (!Number(item)) {
return acc;
}
let numberUnit = "";
const zeroNum = item.padStart(4, "0");
for (let i = 0; i < 4; i++) {
const number = Number(zeroNum[i]);
if (number) {
const unit = tenUnits[3 - i];
numberUnit += `${unit && number === 1 ? "" : numberUnits[number]
}${unit}`;
}
}
const thousandUnit = thousandUnits[index] ?? "";
return `${numberUnit + thousandUnit} ${acc}`;
}, "")
.trim();
}
formatNumber(123456789);
1억 2345만 6789
formatNumberAll(123456789);
일억 이천삼백사십오만 육천칠백팔십구
반응형
'Programming > JavaScript & jQuery' 카테고리의 다른 글
[Javascript] Form Input 필수 입력 처리 및 안내 문구 변경 (required) (0) | 2025.03.06 |
---|---|
[jQuery] 디데이 카운터 (0) | 2025.03.06 |
tabslet 과 slick 함께 사용할 경우 slick 노출에 문제가 발생되는 경우 해결 방법 (0) | 2023.11.02 |
[Javascript] 페이지에서 새로고침, 뒤로가기 시 안내 메시지 나타내기 (0) | 2023.03.17 |
[Javascript] input & textarea 커서 위치에 텍스트 입력하기 (0) | 2023.03.03 |