주어진_문자열.padEnd(지정한_길이[, 채우길_원하는_문자열]);
const str = "hello"; // 주어진 문자열(문자열의 길이: 5)

// 주어진_문자열.padStart(지정한_길이[, 채우길_원하는_문자열]);
// 지정한 길이: 10, 채우길 원하는 문자열: "*"
const resultStr = str.padEnd(10, "*");

console.log(resultStr); // 출력: "hello*****"
str.padEnd(targetLength)
str.padEnd(targetLength, padString)
"js".padEnd(6); 
// "js    "
// 두 번째 인수를 생략하면 공백으로 채웁니다.

"js".padEnd(6, "0"); 
// "js000"
// 지정한 문자열("0")을 필요한 길이만큼 반복하여 채웁니다.

"js".padEnd(5, "abc"); 
// "jsabc"
// padString이 길더라도 필요한 만큼만 잘려서 사용됩니다.

"javascript".padEnd(5, "."); 
// "javascript"
// 기존 문자열이 이미 목표 길이보다 길면 아무 변화가 없습니다.
const str = "hello"; // 주어진 문자열(문자열의 길이: 5)

// 지정한 길이: 10, 채우길 원하는 문자열: "*@"
const resultStr = str.padEnd(10, "*@");

console.log(resultStr); // 출력: "hello*@*@*"
const str = "hello"; // 주어진 문자열(문자열의 길이: 5)

// 지정한 길이: 10, 채우길 원하는 문자열을 지정하지 않음
const resultStr = str.padEnd(10);

// 빈 공백이 채워짐
console.log(resultStr); // 출력: "hello     "
// 제품 리스트 예제
const items = [
    { name: "Coffee", price: 4500 },
    { name: "Donut",  price: 2000 },
    { name: "Latte",  price: 5000 }
];

// 컬럼 너비 지정 (제품명 10자, 가격 5자)
const nameWidth = 10;
const priceWidth = 5;
const fillChar = ".";

console.log("--- PRODUCT LIST ---");

items.forEach(item => {
    // 제품명: 뒤쪽을 '.'으로 채워 10자 확보
    const paddedName = item.name.padEnd(nameWidth, fillChar);
    
    // 가격: 숫자를 문자열로 변환 후, 앞쪽을 공백으로 채워 5자 확보 (padEnd와 대칭되는 정렬을 위해 padStart 사용)
    const paddedPrice = String(item.price).padStart(priceWidth, " ");
    
    // 출력: "Coffee.... 4500" 형태
    console.log(`${paddedName} ${paddedPrice}원`);
});

/*
출력:
--- PRODUCT LIST ---
Coffee....  4500원
Donut.....  2000원
Latte.....  5000원
*/