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

193
Visualizações
Convert an object into an array of objects base on a substring in the keys

I have an object that looks like this:

const object = {
User 1 Fecha de Nacimiento: "02/05/2000",
User 1 Porcentage: 25,
User 1 Primer Apellido: "Gonzalez",
User 1 Segundo Apellido: "Perez",
User 1 Sexo: "H",
User 1 nombre: "Manuel",
User 2 Fecha de Nacimiento: "02/05/2000",
User 2 Porcentage: 25,
User 2 Primer Apellido: "Diaz",
User 2 Segundo Apellido: "Rodriguez",
User 2 Sexo: "M",
User 2 nombre: "Pepa",
}

I would like to manipulate this object so it gets transform in an array that looks like this base on the information for each user (ie, 1 or 2):

const arrayOfObjects = [
                        {
                         Fecha de Nacimiento: "02/05/2000",
                         Porcentage: 25,
                         Primer Apellido: "Gonzalez",
                         Segundo Apellido: "Perez",
                         Sexo: "H",
                         Nombre: "Manuel"
                        }, 
                        {
                         Fecha de Nacimiento: "02/05/2000",
                         Porcentage: 25,
                         Primer Apellido: "Diaz",
                         Segundo Apellido: "Rodriguez",
                         Sexo: "M",
                         Nombre: "Pepa" 
                        }
                       ]; 

I will need to have a helper funcion to do it, so I can then store it in a react state (funcional component)

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

0

const srcObject = {
  "User 1 Fecha de Nacimiento": "02/05/2000",
  "User 1 Porcentage": 25,
  "User 1 Primer Apellido": "Gonzalez",
  "User 1 Segundo Apellido": "Perez",
  "User 1 Sexo": "H",
  "User 1 nombre": "Manuel",
  "User 2 Fecha de Nacimiento": "02/05/2000",
  "User 2 Porcentage": 25,
  "User 2 Primer Apellido": "Diaz",
  "User 2 Segundo Apellido": "Rodriguez",
  "User 2 Sexo": "M",
  "User 2 nombre": "Pepa",
}


const transformData = (src) => {
  const results = [];
  Object.keys(src).forEach(key => {
    const split = key.split(/^User (\d+) /).filter(i => i !== '')
    const index = +split[0] - 1
    const newKey = split[1]
    if (!results[+index]) {
      results[+index] = {}
    }
    results[+index][newKey] = src[key]
  })
  return results
}




console.log(transformData(srcObject))

about 4 years ago · Juan Pablo Isaza Relatório

0

The Approach

  1. Organize the object structure by splitting the object keys ( because the order many differ
  2. Group them by Common Key part
  3. Now collect into an array

Implementation

var obj = {
  "User 1 Fecha de Nacimiento": "02/05/2000",
  "User 1 Porcentage": 25,
  "User 1 Primer Apellido": "Gonzalez",
  "User 1 Segundo Apellido": "Perez",
  "User 1 Sexo": "H",
  "User 1 nombre": "Manuel",
  "User 2 Fecha de Nacimiento": "02/05/2000",
  "User 2 Porcentage": 25,
  "User 2 Primer Apellido": "Diaz",
  "User 2 Segundo Apellido": "Rodriguez",
  "User 2 Sexo": "M",
  "User 2 nombre": "Pepa",
}



const getPrefixAndSuffix = (str = "", value) => {

  //console.log("::", str)
  var index = str.indexOf(' ', str.indexOf(' ') + 1);

  var firstChunk = str.substr(0, index);
  var secondChunk = str.substr(index + 1);


  return {
    prefix: firstChunk,
    suffix: secondChunk,
    value: value
  }

}

function groupBy(list, keyGetter) {
  const map = new Map()
  list.forEach(item => {
    const key = keyGetter(item)
    const collection = map.get(key)
    if (!collection) {
      map.set(key, [item])
    } else {
      collection.push(item)
    }
  })
  return map
}

const getAsList = (groups = {}) => {

  const valuesArr = []
  groups.forEach((value, key, map) => {

    var resultObj = {}

    value.forEach(value => {
      resultObj[value.suffix] = value.value
    })

    valuesArr.push(resultObj)
  });

  return valuesArr

}

const getFormatted = (obj) => {

  const asSplitList = Object.keys(obj).map((key) => {

    return getPrefixAndSuffix(key, obj[key])

  })

  const groupedItems = groupBy(asSplitList, (it) => it.prefix)
  return groupedItems

}



var format = getFormatted(obj)
const finalList = getAsList(format)

console.log(finalList)

about 4 years ago · Juan Pablo Isaza Relatório

0

const object = {
      "User 1 Fecha de Nacimiento": "02/05/2000",
      "User 1 Porcentage": 25,
      "User 1 Primer Apellido": "Gonzalez",
      "User 1 Segundo Apellido": "Perez",
      "User 1 Sexo": "H",
      "User 1 nombre": "Manuel",
      "User 2 Fecha de Nacimiento": "02/05/2000",
      "User 2 Porcentage": 25,
      "User 2 Primer Apellido": "Diaz",
      "User 2 Segundo Apellido": "Rodriguez",
      "User 2 Sexo": "M",
      "User 2 nombre": "Pepa",
      }

      var obj = {};

      for (const [key, value] of Object.entries(object)) {
        
        let splitedData = key.match(/User\s\d/);
        if (splitedData) {
          let user = splitedData[0];
          if (!obj[user])
            obj[user] = {};

          let prop = key.replace(/User\s\d/i, '').trim();
          obj[user][prop] = value;
        }
      }

      let outPut = Object.values(obj);
      console.log(outPut);

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