Soy un desarrollador súper ecológico que comenzó mi primer trabajo la semana pasada. Recibí un comentario de otro desarrollador para agregar una condición para verificar si la matriz no está definida y para verificar si la matriz es de hecho una matriz.
Inicialmente usé:
$: hasActiveCoupons = $cart.coupons && $cart.coupons.length > 0; if (hasActiveCoupons && $cart.coupons.find((coupon) => coupon.id === couponCode)) { ... }Pero luego me señaló que $cart.coupons.length > 0 devolvería un valor falso. Y lo corrigió escribiendo:
if ($cart.coupons?.length && $cart.coupons.find((coupon) => coupon.id === couponCode)) { ... }Así que me pregunto cómo funciona esto. Me cansé de leer algunas otras preguntas , pero no entiendo completamente este concepto.
$cart.coupons.length > 0 devolverá un valor falso si los coupons están vacíos, pero no es necesario verificar la longitud de esta manera en este caso. Una aproximación más pequeña a este flujo sería la siguiente:
$cart.coupons?.find(({ id }) => id === couponCode); Si coupons no está definido, se devuelve undefined .
Si ningún valor satisface la función de prueba dentro de find , se devuelve undefined .
Por lo tanto, no es necesario probar la longitud por separado.