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方法是展平小型陣列的一種簡單而有效的方法。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP