阵列,我node.js 6.10
的应用程序,我想在我的阵列,以确定是这样的:如何检查是否数组是空数组中的Javascript
[
[
[]
],
[]
]
这种嵌套可以去到N个级别,可以在任何级别的数组中具有元素。我怎样才能做到这一点?谢谢
P.S.我知道我可以使用n级循环做到这一点,但想知道更优化的解决方案。
阵列,我node.js 6.10
的应用程序,我想在我的阵列,以确定是这样的:如何检查是否数组是空数组中的Javascript
[
[
[]
],
[]
]
这种嵌套可以去到N个级别,可以在任何级别的数组中具有元素。我怎样才能做到这一点?谢谢
P.S.我知道我可以使用n级循环做到这一点,但想知道更优化的解决方案。
的一行代码:
let isEmpty = a => Array.isArray(a) && a.every(isEmpty);
//
let zz = [
[
[]
],
[],
[[[[[[]]]]]]
]
console.log(isEmpty(zz))
如果你想知道如何工作的,请记住,约一空集的任何说法是正确的(” vacuous truth"),因此a.every(isEmpty)
是真的用于空阵列和仅包含空阵列的阵列。
是,
您所需要的只是编写递归函数,即在其路上检查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
你可以这样做:
var arr = [[[]],[]],
isEmpty = a => a.toString().replace(/,/g, '') === '';
console.log(isEmpty(arr));
创建一个递归函数,也许? –
'arr.toString()。replace(/,/ g,'')=== true' – user7929528
^^^如果数组是整串逗号 – user7929528