如何在 Javascript 中检查数组是否是空数组的数组



在我的node.js 6.10应用程序中,我试图在我的数组中识别如下所示:

[
    [
        []
    ],
    []
]

此嵌套可以进入 n 级,并且可以在任何级别的数组中具有元素。我该怎么做?谢谢

附言我知道我可以使用 n 级 for 循环来做到这一点,但想知道更优化的解决方案。

单行:

let isEmpty = a => Array.isArray(a) && a.every(isEmpty);
//
let zz = [
    [
        []
    ],
    [],
    [[[[[[]]]]]]
]
console.log(isEmpty(zz))

如果你想知道这是如何工作的,请记住,任何关于空集的陈述都是真的("空洞的真理"(,因此a.every(isEmpty)对于空数组和只包含空数组的数组都是真的。

你可以做:

const arr = [[[]],[]]
const isEmpty = a => a.toString().replace(/,/g, '') === ''
console.log(isEmpty(arr))

是的,

您所需要的只是编写递归函数,该函数在途中检查array.length属性。

像这样:

function isEmpty(arr) {
let result = true;
for (let el of arr) {
    if (Array.isArray(el)) {
        result = isEmpty(el); 
    } else {
        return false;
    }
}
return result;

}

您可以考虑使用lodash:https://lodash.com/docs/#flattenDeep

另一个利用concat的紧凑解决方案:

[].concat.apply([], [[], [], []]).length; // 0

最新更新