Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

147
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda