자바스크립트 문자열 조작하기

아래 코드는 제가 해시법을 공부하기 위해서 만든 코드입니다.

const existArr = [5, 6, 14, 20, 29, 34, 37, 51, 69, 75];
const hashedArr = [];
const hashTable = [];
const hashKey = 13;

console.log(`기존 배열: [${existArr}]`);

for (let i in existArr) {
    hashedArr[i] = null;
}

let i = 0;

while (i < hashedArr.length) {
    for (let j of existArr) {
        let formula = j % hashKey;
        hashedArr[i] = formula;
        i++;
    }
}

console.log(`해시화한 배열: [${hashedArr}]`);

i = 0;
while (i < hashedArr.length) {
    for (let j of existArr) {
        let formula = j % hashKey;
        hashTable[formula] = existArr[i];
        i++;
    }
}

console.log(`해시테이블: [${hashTable}]`);

코드의 출력 결과입니다.

기존 배열: [5,6,14,20,29,34,37,51,69,75]
해시화한 배열: [5,6,1,7,3,8,11,12,4,10]
해시테이블: [,14,,29,69,5,6,20,34,,75,37,51]

출력 결과가 배열의 형태가 아닌 템플릿 리터럴로 감싸아서 콘솔 내부에 있는 배열 변수들이 문자열화 된것으로 보입니다. 여기서 제가 해결하고 싶은것은

  1. 각 배열의 원소사이의 간격을 한칸 띄우고 싶습니다. 어떤 메서드를 어떻게 사용해야 하나요?
  2. 해시테이블의 컴마 왼쪽 혹은 컴마 사이의 빈 값들은 기존 배열에서 해시값으로 나누어 지지 않은 원소의 자리입니다. 이 자리를 0 혹은 null로 채우고 싶습니다.

배열의 원소 사이를 특정 문자열로 채우는 건 Array.prototype.join으로 충분히 가능할 것입니다. 굳이 특정 메소드에 의존하지 않더라도 반복문을 통해서 구현할 수도 있습니다.
다만Array.prototype.join을 쓰는 경우, null이나 undefined가 원소라면 빈 문자열로 출력됩니다. 그렇기에 문자열로 굳이 출력해야 한다면 중간에 과정이 더 필요할 것이고요.