Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to check if a nested array is empty or not?

How do I check whether a nested array is empty or not? The array looks like this when there is no data:

const data = [ [  ] ]

And if it has data it looks like this:

const data = [
  [{"Product": 7  }]
]

To check if it is empty I am doing the following which does not work:

if (!Array.isArray(data[0][0]) || data[0][0].length === 0) {
  return "Data is empty"
}
  1. What I don't understand is why !Array.isArray(data[0][0]) returns true, which means the nested array is not an array (which is strange because it is an array, just empty). According to the docs, Array.isArray([]) returns true so how can !Array.isArray(data[0][0] return true?

  2. The data[0][0].length part throws an error saying "TypeError: "data[0][0] is undefined"". Why would that be the case?

  3. That leads to the question of how to check if a nested array is empty or not?

like image 293
volume one Avatar asked Oct 24 '25 19:10

volume one


1 Answers

You could do something like this:

function checkIfEmpty(array) {
  return Array.isArray(array) && (array.length == 0 || array.every(checkIfEmpty));
}


console.log(checkIfEmpty([[{"name":"something"}]])); // false
console.log(checkIfEmpty([[]])); // true
like image 152
Thalaivar Avatar answered Oct 26 '25 09:10

Thalaivar