Skip to content

实现一个方法,可以对两个数组的维数进行对比

Posted on:2024年9月10日 at 11:30

“维度”是指数组的嵌套层级。例如,[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 的维度更高

解释

  1. getArrayDepth 函数

    • 递归计算数组的深度。如果数组为空,则返回 0。
    • 否则,递归计算第一个元素的深度,并加 1 作为当前数组的深度。
  2. compareArrayDepth 函数

    • 使用 getArrayDepth 计算两个数组的维度。
    • 比较两个维度,返回 1、-1 或 0 表示哪个数组的维度更高,或者维度相同。
原文转自:https://fe.ecool.fun/topic/62546213-8ab6-473e-8b24-1e53e17ab9fb