“维度”是指数组的嵌套层级。例如,[1, 2]
是一个 1 维数组,而 [[1], [2]]
是一个 2 维数组。
以下是一个示例函数,用于计算数组的维度并对比两个数组的维度:
// 计算数组的维度
function getArrayDepth(arr) {
if (!Array.isArray(arr)) return 0;
return 1 + (arr.length > 0 ? getArrayDepth(arr[0]) : 0);
}
// 对比两个数组的维度
function compareArrayDepth(arr1, arr2) {
const depth1 = getArrayDepth(arr1);
const depth2 = getArrayDepth(arr2);
if (depth1 > depth2) {
return 1; // arr1 的维度更高
} else if (depth1 < depth2) {
return -1; // arr2 的维度更高
} else {
return 0; // 两个数组的维度相同
}
}
// 示例
const array1 = [1, [2, [3]]];
const array2 = [1, 2, 3];
console.log(compareArrayDepth(array1, array2)); // 输出 1,array1 的维度更高
解释
-
getArrayDepth
函数:- 递归计算数组的深度。如果数组为空,则返回 0。
- 否则,递归计算第一个元素的深度,并加 1 作为当前数组的深度。
-
compareArrayDepth
函数:- 使用
getArrayDepth
计算两个数组的维度。 - 比较两个维度,返回 1、-1 或 0 表示哪个数组的维度更高,或者维度相同。
- 使用