使用 JavaScript 按另一個數組對陣列進行排序


假如我們有兩個這樣的陣列 −

const arr1 = [1, 3, 2, 4, 5, 6];
const arr2 = [1, 2, 5];

我們需要編寫一個接收兩個此類陣列的 JavaScript 函式。然後,我們的函式應返回一個新陣列,其中包含 arr1 中的所有元素,但按照 arr2 的順序進行排序。

例如,出現在兩個陣列中的元素應該首先按其在第二個陣列中的順序出現,然後是僅出現在第一個陣列中的元素,保留其順序。

示例

程式碼為 −

const arr1 = [1, 3, 2, 4, 5, 6];
const arr2 = [1, 2, 5];
const sortByReference = (arr1, arr2) => {
   const inBoth = el => arr1.indexOf(el) !== -1 && arr2.indexOf(el) !== -1;
   const sorter = (a, b) => {
      if(inBoth(a) && inBoth(b)){
         return arr1.indexOf(a) - arr2.indexOf(b);
      }
      if(inBoth(a)){
         return -1;
      };
      if(inBoth(b)){
         return 1;
      };
      return 0;
   };
   arr1.sort(sorter);
};
sortByReference(arr1, arr2);
console.log(arr1);

輸出

控制檯中的輸出 −

[ 1, 2, 5, 3, 4, 6 ]

更新於: 12-Oct-2020

281 次瀏覽

開啟你的職業生涯

完成課程即可獲得認證

開始
廣告