Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 다차원 배열로 정렬

<시간/>

다음과 같은 배열 배열이 있다고 가정합니다. -

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' ] ]