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

165
Views
¿Puedo cambiar el tipo de acumulador en el método .reduce?

Actualmente estoy tratando de reducir una cadena a un número [], pero soy nuevo en mecanografiado y simplemente no pude encontrar la manera de escribir mi código para que el compilador de mecanografiado deje de quejarse...

Lo que estoy tratando de hacer:

 matString.split(/[\n ]/).reduce((acc, cur, index) => acc[index] = Number(cur));

Hasta ahora, he intentado escribirlo así, pero simplemente no funciona :(

 matString.split(/[\n ]/).reduce((acc: Array<number>, cur, index) => acc[index] = Number(cur)) as Array<number>;

Solo por contexto, este código recibe una matriz en el formato de una cadena y quiero convertirla en una matriz para poder trabajar con ella. Ya me encontré con este problema en diferentes circunstancias y tuve que solucionarlo, pero esta vez me gustaría entender cómo solucionarlo.

Además, si ayuda a explicar mejor mi problema, aquí hay una imagen de mi código seguida del error del compilador: imagen de código con error

Esta es parte de mi solución a este ejercicio sobre el ejercicio .

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

0

Si bien es posible , sería mucho más fácil evitar .reduce y simplemente asignar la cadena dividida a Number , sin necesidad de tipeo explícito:

 const result = matString .split(/[\n ]/) .map(Number);

Si tuvo que ir a la ruta .reduce , use genéricos para indicar el tipo de acumulador y recuerde devolver el acumulador al final de la devolución de llamada:

 const result = matString.split(/[\n ]/).reduce<Array<number>>((acc, cur, index) => { acc[index] = Number(cur); return acc; }, []);

Si la entrada se compone de una cadena que contiene caracteres numéricos, podría ser mejor hacer coincidir esos caracteres, en lugar de dividir en líneas nuevas y espacios:

 const result = matString .match(/\d+(?:\.\d+)?/g) // assuming there will always be at least one match .map(Number);
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!