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

211
Views
¿Cómo crear una función recursiva JS para formatear un objeto de datos, pero establecer un nivel para transformar un objeto o mantener los datos originales?

 const obj2arr = (data, level) => { const dataKeys = "object" === typeof(data) && !Array.isArray(data) && Object.keys(data); let results = []; if (!!dataKeys) { for (let dataKey of dataKeys) { let obj = { name: dataKey } obj["values"] = data[dataKey] || null; if ("object" === typeof(data[dataKey]) && !Array.isArray(data[dataKey]) && data[dataKey] && "object" === typeof(data[dataKey]) && level > 0) { obj["values"] = obj2arr(data[dataKey], level); --level } ++level results = [...results, obj]; } } return results } let b = { a: [1, 2], b: 3, c: 'c', d: { d1: 'bla', d2: 'ble', d3: { e: 1, f: [1, 2], g: 'bli', h: { h1: 1, h2: 2 } } } }; res = obj2arr(b, 1); console.log(res);

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

0

No debería tener esas instrucciones level++ y level-- . En su lugar, pase el level - 1 a la llamada recursiva:

 obj["values"] = obj2arr(data[dataKey], level - 1);

De esta manera, la condición que ya tiene ( level > 0 ) se asegurará de que solo se realice la transformación hasta el nivel dado.

No toqué nada más en tu código:

 const obj2arr = (data, level) => { const dataKeys = "object" === typeof(data) && !Array.isArray(data) && Object.keys(data); let results = []; if (!!dataKeys) { for (let dataKey of dataKeys) { let obj = { name: dataKey } obj["values"] = data[dataKey] || null; if ("object" === typeof(data[dataKey]) && !Array.isArray(data[dataKey]) && data[dataKey] && "object" === typeof(data[dataKey]) && level > 0) { obj["values"] = obj2arr(data[dataKey], level - 1); } results = [...results, obj]; } } return results } let b = { a: [1, 2], b: 3, c: 'c', d: { d1: 'bla', d2: 'ble', d3: { e: 1, f: [1, 2], g: 'bli', h: { h1: 1, h2: 2 } } } }; res = obj2arr(b, 1); console.log(res);

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!