다음과 같은 배열 배열이 있다고 가정합니다. -
const arr = [ ["A","F","A","H","F","F"], ["F","A","A","F","F","H"] ];
이러한 배열을 취하는 JavaScript 함수를 작성해야 합니다.
함수는 다음 규칙에 따라 내부적으로 주어진 배열의 모든 하위 배열을 정렬해야 합니다 -
- 요소가 "A" 또는 "F"가 아닌 경우 해당 위치를 유지해야 합니다.
- 요소가 "A" 또는 "F"인 경우 알파벳순으로 정렬되어야 합니다.
따라서 위 배열의 최종 출력은 다음과 같아야 합니다. -
const output = [ ["A","A","A","H","A","F"], ["F","F","F","F","F","H"] ];
정렬 알고리즘이 그렇게 하는 경우 하위 배열의 요소가 배열을 변경할 수 있습니다.
예시
const arr = [ ["A","F","A","H","F","F"], ["F","A","A","F","F","H"] ]; const customSort = (arr = []) => { const order = [].concat(...arr.slice()), res = []; order.forEach((el, ind) => { if (el === 'A') { const fIndex = order.indexOf('F'); if (fIndex < ind){ order[fIndex] = 'A'; order[ind] = 'F'; }; }; }) arr.forEach(el => res.push(order.splice(0, el.length))) return res; } console.log(customSort(arr));
출력
콘솔의 출력은 -
[ [ 'A', 'A', 'A', 'H', 'A', 'F' ], [ 'F', 'F', 'F', 'F', 'F', 'H' ] ]