陣列,我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