检查多维对象是否为空

Evg*_*nik 1 javascript arrays jquery multidimensional-array

我有一个多维对象。根据其内容(空或非空),我想执行不同的功能。
所以我试图检查它是否为空:

arr = [
  [],
  [],
  []
];

Object.size = function(obj) {
  var size = 0,
    key;
  for (key in obj) {
    if (obj.hasOwnProperty(key)) size++;
  }
  return size;
};

var size = Object.size(arr);

if (size > 0) {
  alert("NOT empty!")
} else {
  alert("empty...")
}
Run Code Online (Sandbox Code Playgroud)

在我的示例中,它说NOT empty!,尽管它是空的(嗯,有点。有几个空对象)。

那么如何确定它是否由空对象组成呢?

这是一个小提琴

epa*_*llo 7

some是你所需要的全部

var hasValues = arr.some( function (a) { return a.length });
Run Code Online (Sandbox Code Playgroud)

或者你可以使用every

var isEmpty = arr.every( function (a) { return !a.length });
Run Code Online (Sandbox Code Playgroud)


le_*_*e_m 5

如果您将数组视为空,只要它们只包含空槽或本身为空的数组,请使用递归函数:

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

// Examples:
console.log(isEmpty([[], [[]]]));    // true
console.log(isEmpty([,,]));          // true
console.log(isEmpty([undefined]));   // false
console.log(isEmpty([null]));        // false
console.log(isEmpty(['']));          // false
console.log(isEmpty([0]));           // false
console.log(isEmpty([{}]));          // false
console.log(isEmpty({}));            // false
Run Code Online (Sandbox Code Playgroud)