Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

192
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda