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方法是展平小型数组的一种简单而有效的方法。