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

289
Vistas
Newbie question: my function variables aren't changing

I have a function for verifying and possibly modifying postal codes from a test file. It verifies correct string length, that there's a space in the middle of the 6 characters (& if not, to insert one), etc. My regExp test is working, but I'm having trouble inserting a space in the middle of a string.

function fixPostalCode(postalCode) {
    var invalidChars =/^[ABCEGHJ-NPRSTVXY]\d[ABCEGHJ-NPRSTV-Z] ?\d[ABCEGHJ-NPRSTV-Z]\d$/i;
    postalCode = postalCode.toString().trim();
   
    if (postalCode.length = 6 && invalidChars.test(postalCode.toString())) {
        return postalCode.toUpperCase();
    }

    if (postalCode.length = 5 && postalCode.charAt(3) !== ' ' && invalidChars.test(postalCode.toString())) {
        return postalCode.slice(0, 3) + " " + postalCode.slice(3, 6);

    } else {
        throw 'Invalid postal code';
    }
}

The test I'm having trouble with is this:

  test('an internal space is added', function () {
    const postalCode = 'A1A1A1';
    expect(fixPostalCode(postalCode)).toEqual('A1A 1A1');
  });

my slice method isn't doing anything to the string.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

trim() removes whitespace from both sides of a string not from the middle of string. As I see from your description you are trying to cancel whitespace in the middle of the string which is not possible with trim. You should use replace

function fixPostalCode(postalCode) {
    let test1 = postalCode.toString().trim();
    console.log(test1) ///It will fail
    let test2 = postalCode.replace(/ +/g, "");
    console.log(test2) ///It will be succesfull
}

fixPostalCode('A1A 1A1');

about 4 years ago · Juan Pablo Isaza Denunciar

0

You're most of the way there, but the order of your space insertion wasn't being picked up by the later Regex as valid. Without changing the regex, your code is functional by swapping the order of your toUpperCase method with the space insertion via slice:

function fixPostalCode(postalCode) {
  var invalidChars = new RegExp(/([ABCEGHJKLMNPRSTVXY]\d)([ABCEGHJKLMNPRSTVWXYZ]\d){2}/i);
  postalCode = postalCode.toString().trim();

  if (invalidChars.test(postalCode.toString())) {
    postalCode = postalCode.toUpperCase();
  }

  if (postalCode.charAt(3) !== ' ') {
    return postalCode.slice(0, 3) + ' ' + postalCode.slice(3, 6);
  } else {
    throw 'Invalid postal code';
  }
}

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