Programming/JavaScript & jQuery

[Javascript] 숫자를 한글로 표시하는 자바스크립트

DOTI 2025. 3. 6. 10:19
[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);
일억 이천삼백사십오만 육천칠백팔십구

반응형