面试题答案
一键面试处理边界情况的思路
- 子数组长度为 0:将长度为 0 的子数组视为合法数据,在排序中自然处理,不会影响整体逻辑。
- 极端长度: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);