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

100
Views
Por qué la salida de la función no devuelve una matriz esperada

Esto debería ser algo simple, pero extraño por qué este código genera 'indefinido', mientras que espero obtener una matriz con números: [1, 2]. Traté de depurarlo en la consola paso a paso, pero aún no entiendo por qué newArr no regresa de la función. ¿Podría alguien explicar, por favor?

 function filterList(arr) { let newArr = [] for(let i = 0; i <= arr.length; i++) { if (typeof arr[i] !== "number") { return } if (typeof arr[i] === 'number') { newArr.push(arr[i]) } } return newArr } console.log(filterList([1,2,'a','b']))

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

0

El primer return que se alcance dentro de una función finalizará la llamada a la función y devolverá lo que establezca allí.

En su caso, está presionando 2 valores en la matriz, pero tan pronto como llegue al tercero a solo está usando return . Esto significa que está devolviendo undefined . Debes devolver newArr

 function filterList(arr) { let newArr = [] for(let i = 0; i <= arr.length; i++) { if (typeof arr[i] !== "number") { return newArr } if (typeof arr[i] === 'number') { newArr.push(arr[i]) } } return newArr } console.log(filterList([1,2,'a','b']))
about 4 years ago · Juan Pablo Isaza Report

0

eliminar return en bucle for

 function filterList(arr) { let newArr = [] for(let i = 0; i < arr.length; i++) { if (typeof arr[i] === 'number') { newArr.push(arr[i]) } } return newArr } const arr = [1,2,'a','b'] console.log(filterList(arr)) // with Array.filter let result1 = arr.filter(ele => typeof ele === 'number') console.log(result1) // with Array.reduce let result2 = arr.reduce((res, ele) => typeof ele === 'number' ? [...res, ele] : res, []) console.log(result2) function stopFunc(isStop = false) { let total = 0 for(let i = 0; i < 10; i++) { total += i if(isStop) return 999 } return total // return 45 } console.log(stopFunc()) console.log(stopFunc(true))

puede verificar la función stopFunc en mi ejemplo, The return statement ends function execution and specifies a value to be returned to the function caller. . en su función:

 if (typeof arr[i] !== "number") { return }

return omitido, en su lugar se devuelve undefined.

Puede consultar la devolución del documento

about 4 years ago · Juan Pablo Isaza Report

0

Está regresando de la función inmediatamente después de encontrar un elemento que no es un número, y el valor de retorno de la función no está undefined , no es la matriz en la que ha estado ingresando números pacientemente. Simplemente elimine esa declaración por completo.

 function filterList(arr) { const newArr = []; for (let i = 0; i <= arr.length; i++) { if (typeof arr[i] === 'number') { newArr.push(arr[i]); } } return newArr; } console.log(filterList([1, 2, 'a', 'b', 3, 4]))

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!