javascript - jQuery:检查数组是否为多维的函数

标签 javascript jquery arrays multidimensional-array

我只是想知道是否有人知道一个简单的函数来检查给定数组是否是多维的,如果可能的话,还要看看它有多少维。

这是一个示例数组:

{"name":"Tiradentes","id":"234534gfgdgd4y5hy","areas":{{"name":"Apucarana", "id":"fh4oth98f894nf89h4"},{etc..., etc....}}}

最佳答案

相当(我想)简单的函数计算数组和类数组对象中的维度(就像你的情况):

function countDimensions(arr)
{
  if (! (arr && typeof arr === 'object') ) {
    return 0;
  }
  var maxCount = Math.max.apply(null, $.map(arr, function(n) {
    return countDimensions(n);
  }));
  return 1 + (isFinite(maxCount) ? maxCount : 0);
}

使用了 jQuery,因为 0) 在标签中提到了它,1) 使用 instanceof Array 天真地检查数组可能会导致多帧应用程序出现棘手的结果,2) $.map 是一种方便的快捷方式,用于移动所有数组 值。

当然,它可以用纯 JS 重写,但不会那么紧凑。 )

必须使用 isFinite 检查,因为 protomax-ing 空数组给出 -Infinite

关于javascript - jQuery:检查数组是否为多维的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16422053/

相关文章:

c - 为什么 gcc 垃圾回收对于已初始化全局变量和未初始化全局变量的行为不同?

javascript - 谷歌地图库加载阻止页面

javascript - 将 setTimeout 放置在带有 if 条件的 setTimeout 中

javascript - 如何在 Bootstrap 中通过触摸(或鼠标)在幻灯片中启用滑动图像?

javascript - 禁用 h :inputText with jQuery

javascript - 从多维数组中删除重复项

c - 从结构中的指针访问结构的值

javascript - .match() 为密码的正则表达式返回 null

javascript - - 选择 ="{{ associationId==association.value }}": Interpolation inside attributes has been removed. 使用 v-bind 或冒号简写

javascript - jquery 代码在 ajax 加载的内容中不起作用