Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

236
Visualizações
usando slice() para recuperar elementos del final de una matriz en JS

Descargo de responsabilidad: soy nuevo en JS. Por lo tanto, todas mis pruebas están pasando menos una, la última, y no puedo encontrar la manera de solucionarlo. ¿Por qué 0 devuelve el último elemento y no una matriz vacía? Además, en una nota separada, cuando traté de usar un valor predeterminado, devolvió los valores incorrectos, por lo que decidí incluir una declaración condicional.

 const takeRight = (array, n) => { n = -n; //setting both default and a negative value for 'n': if there is no number, then n should be -1 const condition = !n ? -1 : n; return array.slice(condition); }; console.log(takeRight([1, 2, 3])); // returns [3] --> expected [3] console.log(takeRight([1, 2, 3], 2)); //returns [2, 3] --> expected [2,3] console.log(takeRight([1, 2, 3], 5)); //returns [1, 2, 3] --> expected [1,2,3] console.log(takeRight([1, 2, 3], 0)); //returns [3] --> expected []
about 4 years ago · Juan Pablo Isaza
3 Respostas
Responde à pergunta

0

El problema está en el cálculo de la variable de condition :

 const condition = !n ? -1 : n;

expresión !0 es verdadera, por lo que n se cambia a -1 cuando tiene valor 0 .

Si no desea verificar con números, use isNaN .:

 const takeRight = (array, n) => { n = isNaN(n) ? -1 : -n; return array.slice(n); };
about 4 years ago · Juan Pablo Isaza Relatório

0

El problema podría ser tu expresión. Verifique "No es un número"

 const condition = isNaN(n) ? -1 : n;

MDN: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/isNaN

about 4 years ago · Juan Pablo Isaza Relatório

0

Entonces, en primer lugar, no debe reasignar argumentos. Pero el problema real aquí es usar !n para probar si existe. Puede ser un buen truco aquí y allá, pero en realidad es confuso. Prefijar cualquier cosa con un ! en JavaScript lo convierte en un booleano y luego lo niega, y las reglas para esta conversión no son obvias y tampoco son las mismas en todos los idiomas. Pero en JS, !0 te da el mismo resultado que !undefined o !null , porque el número 0 a menudo simboliza un "estado fuera de lugar", básicamente un false , pero más corto. De todos modos, para evitar todo eso, solo use los parámetros predeterminados y use un operador ternario en la declaración de retorno para verificar el caso específico de n = 0 así:

 const takeRight = (array, n = 1) => n === 0 ? [] : condition array.slice(-n);

Por supuesto, también puede hacerlo un poco más detallado:

 const takeRight = (array, n = 1) => { if (n === 0) { return []; } return condition array.slice(-n); };

EDITAR: ¡Incluso !"" devuelve true por cierto, que tampoco es realmente "obvio", ¡así que usar ! para verificar si algo está definido o existe, realmente puede causar problemas y resultados inesperados. Lo desaconsejaría a menos que realmente sepa lo que está haciendo y por qué.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda