Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

186
Views
¿Cómo se comprueba fácilmente si una variable es un número o no en JavaScript?

No soy un desarrollador de JavaScript, pero solo quiero saber la forma correcta de verificar que una variable contenga un número o no. Después de un par de análisis, llegué a la siguiente solución. ¿Es la forma correcta?

 function calculation(n1,n2 , ...numbers) { let validateNumber = (num) => { if(num !== num) return 0; else return typeof num === 'number' ? num : 0; } let sum =0; for(n of numbers){ sum += validateNumber(n); } console.log(sum); } calculation(5,6,7,'gg','',null, NaN, undefined, null,8,9,5.4,10);

Verifique la función de flecha 'validateNumber'.

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Primera versión =>
-- simplemente use isNaN() : sum+(isNaN(val)?0:Number(val)

Segunda versión (preguntada en el comentario aquí) =>
-- simplemente use una comparación estricta. para obtener solo valores de tipo numérico.

 const calculation =(...numbers)=> // (n1,n2 , ...numbers)=> numbers.reduce((sum,val)=> sum + (Number(val)===val ? val : 0) // sum+(isNaN(val)?0:Number(val)) , 0); console.log( calculation(5,6,7,'gg','',null, NaN, undefined, null,8,9,5.4,'10') )

Para mayor claridad, aquí hay una tabla que muestra la ejecución de la prueba según los diferentes tipos posibles

 const testFunction = val => Number(val)===val , values = [ { v: 123, display: `123`, expected: true } , { v: '123', display: `"123"`, expected: false } , { v: NaN, display: `NaN`, expected: false } , { v: undefined, display: `undefined`, expected: false } , { v: null, display: `null`, expected: false } ] , tBody = document.querySelector('table > tbody') ; let score = 0 ; for (let {v, display, expected} of values) { let TR = tBody.insertRow() , res = testFunction(v) ; score += expected===res ? 1 : 0 TR.insertCell().textContent = display TR.insertCell().textContent = expected TR.insertCell().textContent = res TR.insertCell().className = expected===res ? 'ok' : 'bad' } document.querySelector('table >tfoot td:nth-of-type(2)') .textContent = `${score} / ${values.length}`
 table { font-family: Arial, Helvetica, sans-serif;border-collapse: collapse;margin: 0 1em; } td { padding: .2em .8em;border: 1px solid darkblue; } thead,tfoot { background-color: #84a4ce;text-transform: capitalize; } caption { padding: .3em;caption-side: bottom;font-size: .8em; } .ok:before,.bad:before { font-weight: bold;font-size: 1.2em; } .ok:before { color: green;content: '\2713'; } .bad:before { color: red; content: '\2718'; }
 <table> <caption>( Number(val)===val ) ?</caption> <thead> <tr> <td>val</td><td>expected</td><td colspan="2">result</td> </tr> </thead> <tbody></tbody> <tfoot> <tr> <td colspan="3">score</td><td>0/0</td> </tr> </tfoot> </table>

about 4 years ago · Juan Pablo Isaza Report

0

Sí, hay una función integrada en JavaScript para verificar si un cierto valor es un número o no, que es isNaN()

Si desea obtener la suma de todos los números en la matriz, puede intentar usar reduce() de la siguiente manera:

 var data = [5,6,7,'gg','',null, NaN, undefined, null,8,9,5.4,10]; var sum = data.reduce((a,c) =>{ if(!isNaN(c)){ a = a + Number(c); //convert the '' and null to 0 with Number() } return a; },0); console.log(sum)

about 4 years ago · Juan Pablo Isaza Report

0

Sí, también es de una sola línea.

 export const isNum = n => Number(n) === Number(n);

Primero analice para numerar qué parámetro de Eva obtiene para compararlo consigo mismo. Uno de ellos, what the hell's viene con JavaScript es que NaN !== NaN , por lo que si el valor que obtienes después de forzarlo a ser un número se convierte en sa Nan, será diferente de sí mismo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!