How can I combine these regular expressions

I want to combine these three regular expressions, but I dont know if its possible, because the result is different.

What I really want is to delete all space before and after of all strings in an array or object. Also, I need to delete two or more spaces between a string.

Actually the code does the necessary to get expected result, but I want to shorten the code.

let persona = {
    name: 'Tomas  Torres Caleron',
    edad: 26
  },
  casa = {
    direccion: ' aa',
    comuna: 'las condes '
  },
  persona1 = {
    name: 'Catalina  Zaror  ""      Letelier',
    edad: 24
  },
  casa1 = {
    direccion: ' aa',
    comuna: ' las condes '
  },
  empleado1 = {
    persona: persona,
    casa: casa
  },
  empleado2 = {
    persona: persona1,
    casa: casa1
  },
  empleados = [empleado1, empleado2];




console.log(JSON.parse(JSON.stringify(empleados).replace(/"\s+|\s+"/g, '"').replace(/[ ]{2,}/g, ' ').replace(/\\"/g, '')));

This is the expected result:

{
  "empleados": [{
      "persona": {
        "name": "Tomas Torres Caleron",
        "edad": 26
      },
      "casa": {
        "direccion": "aa",
        "comuna": "las condes"
      }
    },
    {
      "persona": {
        "name": "Catalina Zaror Letelier",
        "edad": 24
      },
      "casa": {
        "direccion": "aa",
        "comuna": "las condes"
      }
    }
  ]
}

Upvotes: 0

Views: 76

Answers (1)

User863
User863

Reputation: 20039

Using object initializer

JSON.stringify({empleados})

let persona = {
    name: 'Tomas  Torres Caleron',
    edad: 26
  },
  casa = {
    direccion: ' aa',
    comuna: 'las condes '
  },
  persona1 = {
    name: 'Catalina  Zaror  ""      Letelier',
    edad: 24
  },
  casa1 = {
    direccion: ' aa',
    comuna: ' las condes '
  },
  empleado1 = {
    persona: persona,
    casa: casa
  },
  empleado2 = {
    persona: persona1,
    casa: casa1
  },
  empleados = [empleado1, empleado2];




console.log(JSON.parse(JSON.stringify({empleados}).replace(/"\s+|\s+"/g, '"').replace(/[ ]{2,}/g, ' ').replace(/\\"/g, '')));

Using JSON.stringify()'s replacer method

JSON.stringify(value[, replacer[, space]])

Regex: https://regex101.com/r/iB4QBl/1

let persona = {
    name: 'Tomas  Torres Caleron',
    edad: 26
  },
  casa = {
    direccion: ' aa',
    comuna: 'las condes '
  },
  persona1 = {
    name: 'Catalina  Zaror  ""      Letelier',
    edad: 24
  },
  casa1 = {
    direccion: ' aa',
    comuna: ' las condes '
  },
  empleado1 = {
    persona: persona,
    casa: casa
  },
  empleado2 = {
    persona: persona1,
    casa: casa1
  },
  empleados = [empleado1, empleado2];




console.log(JSON.parse(JSON.stringify({empleados}, (key, value) => {
  if (typeof value === 'string') {
    return value.replace(/^\s+|\s+$|\"|(\s?\"+\s?|\s+)(?=\s)/g, '')
  }
  return value;
})))

Upvotes: 1

Related Questions