JavaScript 对包含子数组的数组进行排序
在给定的问题陈述中,我们被要求使用JavaScript的功能对包含子数组的数组进行排序。当我们谈论对任何列表或数组进行排序时,sort()和flat()方法非常有用。
sort(),flat()和isArray()方法在JavaScript中是什么
让我们了解一下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变量,并在创建的数组上应用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 ]
第二种方法
第一步 - 声明一个名为flatArr的空数组
第二步 - 定义一个名为flattenHelper的辅助方法,该方法以一个数组作为参数,并对数组的每个元素进行迭代。
第三步 - 如果元素是一个数组,则在该元素上递归调用flattenHelper函数。
第四步 - 如果元素不是一个数组,则将其推入flatArr。
第五步 - 现在使用sort()方法对flatArr进行升序排序,该方法使用一个回调函数来检查两个元素。
第六步 - 最后将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方法是扁平化小数组的简单且好的方法。