En mi código, tengo un elemento y quiero tenerlo en una matriz: o la matriz ya existe y luego presiono mi elemento, o no existe y, en ese caso, creo la matriz con este único elemento:
if (arr) { arr.push(elt); } else { arr = [elt]; } Estoy seguro de que hay una mejor manera de hacer esto. nullish coalescing operator de spreading y fusión nula, pero no encontré ninguna sintaxis correcta. ¿Alguien tiene una idea de cómo podría escribir mis líneas con una sintaxis más agradable? Gracias por adelantado.
Puedes usar la expresión arr || [] para devolver una matriz que es arr si arr ya está definido o [] de lo contrario. Luego, simplemente puede concat el nuevo valor:
arr = (arr || []).concat([elt]) Tenga en cuenta que el nuevo valor debe encerrarse entre [] para evitar que los valores de elt que son matrices se aplanen.
Puede verificar si existe una matriz probando si es falsa-y. Por lo tanto, puede crear una matriz si aún no existe con
arr = (arr || []);A partir de ahí, puede simplemente empujar su nuevo elemento:
arr = (arr || []); arr.push(elt);Vea el siguiente código:
if (arr && arr.length > 0) { arr.push(elt); //or can use spread operator arr = [...arr, elt];//this should work if I am not wrong } else { arr = [elt]; }Es algo similar, pero supongo que debería funcionar bien y es un patrón general.