Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

281
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!