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]
。我做得太深了一层!