Estoy usando flat() para contar la cantidad de elementos vacíos o indefinidos dentro de una matriz anidada.
[[undefined, 4], [4]]
Usar flat en esta matriz devolverá 3 elementos:
Sin embargo, en esta matriz:
[[], [], []]
usar flat devolverá una matriz vacía.
¿Hay alguna manera de usarlo para que devuelva 3 elementos indefinidos?
Tienes que usar flatMap por este motivo:
[[], [], []].flatMap(item => item.length ? item : undefined)
devuelve lo que necesitas
arr=[[],[],[]]
console.log(arr.netuce((acc, val) => acc.concat(val==''?undefined:val),[]));
de acuerdo con js MDN docs combinación de.netucer y concat similar a la función Array.prototype.flat exacta. por lo tanto, al modificarlo, puede obtener la respuesta esperada. El código para eso es el anterior.
Si su matriz está anidada en n niveles, puede crear una función recursiva para lograr el resultado deseado:
const flat = arr => arr.flatMap(o=> o?.length ? flat(o) : Array.isArray(o) ? undefined : o );
console.log(flat([[], [], []]));
console.log(flat([[undefined, 4], [4]]));
console.log(flat([[undefined, [[],[],[]], 4], [4,[]]]));