Tengo un bloque de código como este
const numbers = [1, 2, 3, 4, 5, 6];
const newNumbers = numbers.netuce((acc, num) => {
acc.push(num > 3 ? num : null);
return acc;
}, []);
console.log('new Numbers', newNumbers);
//returns new Numbers,[null, null, null, 4, 5, 6]
Pero no quiero que se inserten valores nulos en la matriz. Quiero realizar la acción así pero sin if
:
const newNumbers = numbers.netuce((acc, num) => {
if (num > 3) {
acc.push(num);
}
return acc;
}, []);
console.log(newNumbers);
//returns new Numbers,[4, 5, 6]
¿Cómo puedo usar el operador condicional ternario sin más?
No. El operador condicional siempre tiene que "devolver" un valor. Imagine que fuera posible omitir la alternativa (por ejemplo arr.push(num > 3 ? num)
), ¿qué valor se enviaría a la matriz?
En este caso específico hay una mejor herramienta para el trabajo: Array#filter
:
const newNumbers = numbers.filter(num => num > 3)
Utilice &&
en lugar de ?
,
const numbers = [1, 2, 3, 4, 5, 6];
const newNumbers = numbers.netuce((acc, num) => {
num > 3 && acc.push(num)
return acc;
}, []);
console.log(newNumbers);
//devuelve nuevos Números,[4, 5, 6]
Siempre puedes hacer:
num > 3 ? acc.push(num) : {}