문제
숫자 배열을 인수로 받아 네 부분으로 구성된 하나의 문자열을 반환하는 JavaScript 함수를 작성해야 합니다. 반환되는 문자열의 각 부분은 다음과 같습니다.
배열의 첫 번째, 두 번째, 뒤에서 두 번째, 마지막 숫자에 해당하는 ASCII 문자로 이루어진 4글자 '단어'. 순서는 왼쪽에서 오른쪽으로 읽는 순서를 그대로 따릅니다.
위와 동일하되, 배열을 오름차순으로 정렬한 후 적용한 결과
위와 동일하되, 배열을 내림차순으로 정렬한 후 적용한 결과
위와 동일하되, 배열을 ASCII 문자로 변환한 뒤 알파벳순으로 정렬하여 적용한 결과
이 네 부분은 하나의 문자열로 이어져야 하며, 각 부분은 하이픈(-)으로 구분합니다.
예시
다음은 구현 코드입니다.
const arr = [99, 98, 97, 96, 81, 82, 82];
const transform = (arr = []) => {
let res = [];
res.push(arr[0], arr[1], arr[arr.length-2], arr[arr.length-1]);
res = res.map(x=>String.fromCharCode(x)).join('');
const arr1 = arr
.map(el => String.fromCharCode(el))
.sort();
const arr2 = (arr1.slice(0, 2) + ',' + arr1.slice(-2))
.split(',')
.join('');
const arr3 = arr2
.split('')
.reverse()
.join('');
return `${res}-${arr2}-${arr3}-${arr2}`;
};
console.log(transform(arr));출력
cbRR-QRbc-cbRQ-QRbc
위 코드에서 transform 함수는 먼저 원본 배열의 양 끝 두 숫자를 String.fromCharCode()로 문자로 변환해 첫 번째 부분을 만들고, 이후 정렬된 배열에서 같은 방식으로 나머지 부분을 생성해 하이픈으로 연결합니다.