Javascript 如何检查嵌套数组是否为空?

Javascript 如何检查嵌套数组是否为空?,javascript,arrays,Javascript,Arrays,如何检查嵌套数组是否为空?当没有数据时,该数组如下所示: const data = [ [ ] ] 如果它有数据,它看起来像这样: const data = [ [{"Product": 7 }] ] if (Array.isArray(a) && a.length) { // whatever you would like to do } 为

如何检查嵌套数组是否为空?当没有数据时,该数组如下所示:

const data = [

              [  ]

             ]
如果它有数据,它看起来像这样:

const data = [

              [{"Product": 7  }]

             ]
if (Array.isArray(a) && a.length) {
     // whatever you would like to do
} 
为了检查它是否为空,我正在执行以下不起作用的操作:

if (!Array.isArray(data[0][0]) || data[0][0].length === 0) {
    return "Data is empty"
}
  • 我不明白的是为什么
    !isArray(数据[0][0])
    返回true,这意味着嵌套数组不是数组(这很奇怪,因为它是数组,只是空的)。根据文档,
    Array.isArray([])
    返回true,那么
    怎么能!isArray(数据[0][0]
    是否返回true

  • 数据[0][0].length
    部分抛出一个错误,称为
    “TypeError:“数据[0][0]未定义”“
    。为什么会出现这种情况

  • 这就引出了如何检查嵌套数组是否为空的问题


  • 数据[0][0]
    是嵌套数组的第一个元素:例如,第一个元素是
    未定义的
    ,第二个对象是
    {“Product”:7}
    。您需要检查
    数据[0]
    -它是第一个嵌套数组,因此需要以下内容:

    if (!Array.isArray(data[0]) || data[0].length === 0) {
        return "Data is empty"
    }
    

    使用时应首先应用Array.prototype.flat(),然后检查结果数组的长度。

    您可以这样做
    如下所示:

    function checkIfEmpty(array) {
      return Array.isArray(array) && (array.length == 0 || array.every(checkIfEmpty));
    }
    
    
    console.log(checkIfEmpty([[{"name":"something"}]])); // false
    console.log(checkIfEmpty([[]])); // true
    

    您可以检查数组是否为空,如下所示:

    const data = [
    
                  [{"Product": 7  }]
    
                 ]
    
    if (Array.isArray(a) && a.length) {
         // whatever you would like to do
    } 
    
    这是一个非常全面的解释。因此,看看你的具体问题,这意味着:

    if (!Array.isArray(data[0]) || data[0].length === 0) {
        return "Data is empty"
    }
    
    const data=[]]
    if(Array.isArray(数据[0])&&data[0].length==0){
    //你想做什么都行
    log(“空数组”)
    
    }
    它应该是
    data[0]。length
    你只有一个嵌套级别,但你正在尝试做两个。只需将它改为
    data[0]
    即可。因此,只需删除额外的[0]
    数据[0][0]
    未定义的(
    数据[0]
    是一个空数组),它确实不是一个数组,看起来像是一个简单的疏忽。
    data
    是父数组。它有一个项,它是子数组。所以要访问
    data
    的第一个项(子数组),你必须执行
    data[0]
    。我做得太深了一层!