MST

星途 面试题库

面试题:JavaScript 数组长度边界在复杂算法中的处理

实现一个 JavaScript 函数,该函数接收一个二维数组作为参数,二维数组中的每个子数组长度不同。函数需要对这些子数组进行特定排序(例如按子数组长度从大到小),同时在排序过程中要妥善处理子数组长度为 0 以及极端长度(如接近 JavaScript 数组长度上限)的边界情况,保证算法的稳定性和效率,描述你处理边界情况的思路并编写完整代码。
42.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

处理边界情况的思路

  1. 子数组长度为 0:将长度为 0 的子数组视为合法数据,在排序中自然处理,不会影响整体逻辑。
  2. 极端长度:JavaScript 数组的最大长度是 2^53 - 1,在排序比较长度时,JavaScript 内部处理数字比较能够处理接近这个上限的数值,无需特殊额外处理。对于效率,选择稳定排序算法,如稳定的归并排序,避免不稳定排序可能导致相同长度子数组顺序错乱。

代码实现

function sortSubArraysByLength(arr) {
    return arr.slice().sort((a, b) => {
        if (a.length === b.length) {
            return 0;
        }
        return b.length - a.length;
    });
}

你可以这样调用这个函数:

const twoDArray = [[1, 2, 3], [4, 5], [], [6, 7, 8, 9]];
const sortedArray = sortSubArraysByLength(twoDArray);
console.log(sortedArray);