JavaScript中包含子陣列元素的陣列排序


給定的問題陳述要求我們使用JavaScript功能對包含子陣列中元素的陣列進行排序。當我們談論對任何列表或陣列進行排序時,sort()和flat方法很有用。

JavaScript中的sort()、flat()和isArray()方法是什麼?

讓我們瞭解JavaScript中sort、flat和isArray方法的工作原理。

sort()方法主要用於對陣列元素進行排序,並返回已排序的陣列。預設情況下,專案按字典順序排序。但是,我們可以提供一個函式作為引數,以不同的方式對專案進行排序。例如:

input - arr = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
arr.sort((a, b) => a - b); // in ascending order
output -  [1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]

flat()函式用於透過連線子陣列來展平陣列。預設情況下,它將陣列展平一層。但是,我們可以提供一個數字來將陣列展平到一定的深度。例如:

input -  arr = [1, [2, 3], [4, [5, 6]]];
const flatArr = arr.flat();
output - [1, 2, 3, 4, 5, 6]

isArray()是JavaScript內建函式。藉助此函式,我們可以確定給定值是否為陣列。它提供布林輸出,指示該值是否為陣列。例如:

Array.isArray([1, 2, 3]); // true
Array.isArray("hello"); // false
Array.isArray({"name": "John"}); // false

上述問題的邏輯

在JavaScript中,對包含子陣列的陣列中的專案進行排序的最簡單方法是使用sort方法和flat方法。

為了對包含子陣列中專案的JavaScript陣列進行排序,我們可以使用JavaScript的flat()方法展平陣列,然後使用sort方法對專案進行排序。

在我們的演算法中,JavaScript的flat方法將用於將陣列展平為一維陣列,而sort方法將按升序對該陣列進行排序。如果我們想對子陣列本身進行排序而不是展平它們,我們可以使用map函式迭代陣列項並分別對它們進行排序。

演算法 - 第一種方法

步驟1 - 建立一個包含子陣列的陣列。

步驟2 - 定義一個flatArr變數,並在建立的arr上應用flat方法。

步驟3 - 展平陣列arr後,我們現在將使用sort方法對陣列進行排序。

步驟4 - 在控制檯中顯示輸出

示例

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

// Flatten the array
const flatArr = arr.flat();
// Sort the flattened array
flatArr.sort((a, b) => a - b);
console.log("After sorting the elements from subarray");
console.log(flatArr); 

輸出

After sorting the elements from subarray
[ 1, 2, 3, 4, 5, 6 ]

演算法 - 第二種方法

步驟1 - 宣告一個名為flatArr的空陣列

步驟2 - 定義一個名為flattenHelper的輔助方法,它將陣列作為引數,並對陣列的每個專案進行迭代。

步驟3 - 如果專案存在於陣列中,則在元素上遞迴呼叫flattenHelper函式。

步驟4 - 如果元素不存在於陣列中,則將其推入flatArr。

步驟5 - 現在使用輸入陣列arr呼叫flattenHelper函式。

步驟6 - 在第五步之後,使用sort()方法(帶有檢查兩個專案的回撥函式)按升序對flatArr進行排序。

步驟7 - 最後返回flatArr作為輸出。

示例

function flattenAndSort(arr) {
  const flatArr = [];

  // A function to recursively flatten and push elements into flatArr
  function flattenHelper(arr) {
    for (let i = 0; i < arr.length; i++) {
      if (Array.isArray(arr[i])) {

     // recursively flatten subarray
        flattenHelper(arr[i]); 
      } else {
        // push element into flatArr
        flatArr.push(arr[i]); 
      }
    }
  }

  flattenHelper(arr);
  // sort flatArr in ascending order
  flatArr.sort((a, b) => a - b); 

  return flatArr;
}

// example usage
const arr = [4, 2, [5, 1], 3, [6]];
const sortedArr = flattenAndSort(arr);
console.log(sortedArr);

輸出

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

複雜度

上述程式碼使用flat()函式展平陣列,然後我們使用sort方法對陣列進行排序。此方法的時間複雜度為O(n log n)。其中n是陣列中專案的總數。sort方法的最壞情況時間複雜度為O(n log n)。

結論

包含子陣列中專案的陣列取決於陣列的大小和問題的複雜性。我們已經看到,flat方法是展平小型陣列的一種簡單而有效的方法。

更新於:2023年8月23日

瀏覽量:154

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.