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

更新於: 2020-11-21

623 次瀏覽

開始您的職業生涯

透過完成課程獲取認證

開始
廣告
© . All rights reserved.