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

116
Visualizações
Convierta una matriz de objetos con un objeto anidado dentro en una nueva matriz con valores del objeto anidado

Estoy tratando de convertir una matriz que existe de objetos con una matriz anidada dentro en una nueva matriz que consta de los valores dentro de la matriz anidada por separado (puede sonar muy complicado pero el ejemplo se muestra muy claro)

Lo que tengo:

 const values = [{ geometry: { "coordinates": [11.4828, 59.1264], "Type": "point" }, properties: { Region: "Oklahoma", sales: { donuts: { 2005: 5, 2006: 8, 2007: 10 }, apples: { 2005: 10, 2006: 8, 2007: 10 } } } }, { geometry: { "coordinates": [9.4828, 76.1264], "Type": "point" }, properties: { Region: "Texas", sales: { donuts: { 2005: 8, 2006: 0, 2007: 7 }, apples: { 2005: 7, 2006: 9, 2007: 4 } } } } ] const filterValue = "donuts"

Cuál es mi objetivo:

 newValues =[{geometry: {"coordinates": [11.4828, 59.1264],"Type":"point"},properties:{Region: "Oklahoma",value:5,time:2005}},{geometry: {"coordinates": [11.4828, 59.1264],"Type":"point"},properties:{Region: "Oklahoma",value:8,time:2006}},{geometry: {"coordinates": [11.4828, 59.1264],"Type":"point"},properties:{Region: "Oklahoma",value:10,time:2007}} AND SO ON FOR ALL THE values that are in const donuts/filter for each value. Could also switch out value for donuts if that is easier } ]

Lo que he probado hasta ahora:

 const newObject = [] values.map((value)=>{ console.log(value.properties.sales.donuts) for (var key in value.properties.sales.donuts) { if (value.properties.sales.donuts.hasOwnProperty(key)) { newObject.push({...value,value.properties:{[key]:value.properties.sales.donuts[key]}) } } }) console.log(newObject)
about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Su sintaxis actual no es válida - value.properties: { no es una clave válida en un objeto literal. Dado que desea que la properties de propiedades de salida contenga datos correspondientes a la región y al año también, debe incluirlos en el objeto que se envía. Dado que tampoco necesita que el año sea una clave en el nuevo objeto, sino un valor (con una propiedad de value ), el objeto que se inserta debe reflejar eso.

Solo debe usar .map cuando devuelve un valor dentro de la función del mapeador para crear una nueva matriz. Si está iterando solo para generar efectos secundarios, debe usar un método de iteración genérico más apropiado, como for..of o forEach . En este caso, dado que desea crear varios objetos en la matriz de salida a partir de un objeto asociado en la matriz de entrada, .flatMap sería más adecuado.

Asigne las entradas .donuts y devuelva el nuevo objeto con geometry y properties .

 const values=[{geometry:{coordinates:[11.4828,59.1264],Type:"point"},properties:{Region:"Oklahoma",sales:{donuts:{2005:5,2006:8,2007:10},apples:{2005:10,2006:8,2007:10}}}},{geometry:{coordinates:[9.4828,76.1264],Type:"point"},properties:{Region:"Texas",sales:{donuts:{2005:8,2006:0,2007:7},apples:{2005:7,2006:9,2007:4}}}}]; const filterValue = "donuts"; const output = values.flatMap(({ geometry, properties }) => Object.entries(properties.sales[filterValue]).map(([year, saleCount]) => ({ geometry, properties: { Region: properties.Region, value: saleCount, time: year, } })) ); console.log(output);

about 4 years ago · Juan Pablo Isaza Relatório

0

Necesitarás un mapa plano aquí

 const values = [ { geometry: { coordinates: [11.4828, 59.1264], Type: 'point', }, properties: { Region: 'Oklahoma', sales: { donuts: { 2005: 5, 2006: 8, 2007: 10, }, apples: { 2005: 10, 2006: 8, 2007: 10, }, }, }, }, { geometry: { coordinates: [9.4828, 76.1264], Type: 'point', }, properties: { Region: 'Texas', sales: { donuts: { 2005: 8, 2006: 0, 2007: 7, }, apples: { 2005: 7, 2006: 9, 2007: 4, }, }, }, }, ]; const mapData = (data, filterBy) => { return data.flatMap((state) => { return Object.entries(state.properties.sales[filterBy]).map( ([time, value]) => { return { ...state, properties: { region: state.properties.Region, time, value, }, }; } ); }); }; const mappedDonuts = mapData(values, 'donuts'); console.log(mappedDonuts);

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