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

176
Visualizações
¿Cómo mapear una matriz de objetos para extraer valores correspondientes a claves que comienzan con un prefijo?

Tengo una matriz de objetos que se ve así:

 const myArr = [ {id: 1, some_data: { "color_1": { "value": "red" }, "color_2": { "value": "blue" }, "color_3": { "value": "yellow" }, "shape_1": { "value": "square" }, "shape_2": { "value": "circle" } } }, {id: 2, some_data: { "color_1": { "value": "pink" }, "color_2": { "value": "orange" }, "color_3": { "value": "yellow" }, "shape_1": { "value": "square" }, "shape_2": { "value": "triangle" } } }, {id: 3, /* some_data: {...}*/}, {id: 4, /* some_data: {...}*/} ]

Quiero revisar myArr y extraer los valores que corresponden a los colores, para terminar con esta matriz:

 // desired output ["red", "blue", "yellow", "pink", "orange", "yellow"]

Así que descubrí que necesitaría usar String.prototype.startsWith() en las teclas . Desafortunadamente, no he tenido éxito en todos mis intentos de mapear sobre myArr .

Inspirado por esta respuesta, probé:

 const oneAttempt = myArr.map((obj) => Object.keys(obj.some_data) .filter((v) => v.startsWith('color')) .map((e) => obj.some_data[e].value) );

Pero no es exactamente lo que necesito. Probablemente sea una cosa bastante simple, pero no puedo resolver esto.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Solo necesita el objeto de some_data y obtener una asignación plana.

 const data = [{ id: 1, some_data: { color_1: { value: "red" }, color_2: { value: "blue" }, color_3: { value: "yellow" }, shape_1: { value: "square" }, shape_2: { value: "circle" } } }, { id: 2, some_data: { color_1: { value: "pink" }, color_2: { value: "orange" }, color_3: { value: "yellow" }, shape_1: { value: "square" }, shape_2: { value: "triangle" } } }], result = data.flatMap(({ some_data }) => Object .keys(some_data) .filter(k => k.startsWith('color_')) .map(k => some_data[k].value) ); console.log(result);

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede usar una combinación de Array#map() , Array#filter() y Object#entries() como en la demostración a continuación:

 const myArr = [{id: 1,some_data: {"color_1": {"value": "red"},"color_2": {"value": "blue"},"color_3": {"value": "yellow"},"shape_1": {"value": "square"},"shape_2": {"value": "circle"}}},{id: 2,some_data: {"color_1": {"value": "pink"},"color_2": {"value": "orange"},"color_3": {"value": "yellow"},"shape_1": {"value": "square"},"shape_2": {"value": "triangle"}}}]; // desired output //["red", "blue", "yellow", "pink", "orange", "yellow"] const desiredOutput = myArr.map( ({some_data}) => Object.entries(some_data).filter( ([key,{value}]) => key.startsWith('color_') ) .map(([key,{value}]) => value) ) .flat(); //OUTPUT: //["red", "blue", "yellow", "pink", "orange", "yellow"] console.log( desiredOutput );

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