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

150
Views
Cómo devolver los datos en una llamada de función para dos claves de objeto diferentes

Tengo un objeto que se parece a esto:

 const data = { students: [{ code: '1', number: '22', type: 'regular', name: 'john', age: '11', class: 'A', }, { code: '2', number: '23', type: 'regular', name: 'steve', age: '12', class: 'B', }], teachers: [{ code: '22', number: '101', type: 'intern', name: 'mac', }, { code: '23', number: '102', type: 'perm', name: 'jess', }], };

Tiene diferentes claves y valores.

Aquí, estoy tratando de masajear estos datos para poder obtener el siguiente resultado: Así que estoy tratando de obtener una matriz que tendrá solo datos de estudiantes y otra que tendrá datos de maestros de una función en sí.

 const result1 = [{ code: '1', number: '22', type: 'regular', name: 'john', }, { code: '2', number: '23', type: 'regular', name: 'steve', }]; const result2 = [{ code: '22', number: '101', type: 'intern', name: 'mac', }, { code: '23', number: '102', type: 'perm', name: 'jess', }];

lo que probé es:

 const getData = ({data = []}) => { data?.map({ code, number, regular, name } ) => { return{ code, number, regular, name }} } getData(data.students) getData(data.teachers) // How do get this data in one function call itself

Esto me da el resultado, pero para esto necesito llamar a esta función dos veces, una para estudiantes y otra para profesores. Quiero llamar a esta función una vez.

Gracias

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

0

Podría mapear nuevas entradas del objeto y tomar la nueva estructura mapeada.

 const data = { students: [{ code: '1', number: '22', type: 'regular', name: 'john', age: '11', class: 'A' }, { code: '2', number: '23', type: 'regular', name: 'steve', age: '12', class: 'B' }], teachers: [{ code: '22', number: '101', type: 'intern', name: 'mac' }, { code: '23', number: '102', type: 'perm', name: 'jess' }] }, getData = ({ code, number, regular, name }) => ({ code, number, regular, name }), result = Object.fromEntries(Object .entries(data) .map(([k, v]) => [k, v.map(getData)]) ); console.log(result);
 .as-console-wrapper { max-height: 100% !important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

Dado que a partir de los datos proporcionados, parece que el OP quiere map principalmente un determinado conjunto de propiedades de los elementos de estudiante/maestro de un mapa/objeto, un enfoque posible es reduce las entries del objeto de data y aplicar el mapeo exclusivamente para students coincidentes. o claves de teachers , cada una de las cuales hace referencia a un valor de tipo matriz válido.

 const data = { students: [{ code: "1", number: "22", type: "regular", name: "john", age: "11", class: "A" }, { code: "2", number: "23", type: "regular", name: "steve", age: "12", class: "B" }], teachers: [{ code: "22", number: "101", type: "intern", name: "mac" }, { code: "23", number: "102", type: "perm", name: "jess" }], }; const { students: result1, teachers: result2, } = Object .entries(data) .reduce((result, [key, value]) => { if ( // process only for a matching key ... (/^students|teachers$/).test(key) // ... and a valid value type. && Array.isArray(value) ) { result[key] = value .map(({ code, number, type, name }) => ({ code, number, type, name }) ); } return result }, {}); console.log({ result1, result2 });
 .as-console-wrapper { min-height: 100%!important; top: 0; }

about 4 years ago · Juan Pablo Isaza Report

0

No estoy seguro de qué uso tiene esto, pero como desea ejecutar una función dos veces y obtener dos resultados, hágalo y combínelo en un objeto:

 const data = { students: [{ code: '1', number: '22', type: 'regular', name: 'john', age: '11', class: 'A' }, { code: '2', number: '23', type: 'regular', name: 'steve', age: '12', class: 'B' }], teachers: [{ code: '22', number: '101', type: 'intern', name: 'mac' }, { code: '23', number: '102', type: 'perm', name: 'jess' }] }; const transformData = (data = []) => data.map(({ code, number, regular, name }) => ({ code, number, regular, name })); const getData = (data) => ({ students: transformData(data.students), teachers: transformData(data.teachers) }); console.log(getData(data));
 .as-console-wrapper { max-height: 100% !important; top: 0; }

Nota: Modifiqué la función transformData para eliminar algo de sintaxis adicional y para eliminar el encadenamiento opcional ya que la versión antigua de Babel de Stack Snippets no lo admite.

Además, no hay ninguna propiedad denominada regular en los objetos originales de la matriz, por lo que quedan sin definir.

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!