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

129
Views
open brackets must be closed in the correct order in javascript
s = ['[', ']', '{', '}', '(', ')'];
copied = s;
console.log(copied.length);
var output;
for (i = 0; i < s.length; i++) {
  console.log('calling function', i);

  different();
}

function different() {
  if (copied[0] == '(' && copied[1] == ')') {
    copied.splice(0, 2);
    output = 'valid';
    console.log('checking', copied);
  } else if (copied[0] == '{' && copied[1] == '}') {
    copied.splice(0, 2);
    output = 'valid';
  } else if (copied[0] == '[' && copied[1] == ']') {
    copied.splice(0, 2);
    output = 'valid';
    console.log('checking', copied);
  } else {
    output = 'invalid';
  }
}

console.log(copied);
console.log(copied.length);
console.log('result is ', output);

i am getting the following output

6

calling function 0

checking [ '{', '}', '(', ')' ]

calling function 1

[ '(', ')' ]

2

result is valid

The problem is for loop runs only twice but it is supposed to run 6 times.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Fixed a few issues with the code. The primary one being that the OP's different() function examines the same part of the array, no matter the state of the loop...

const s = ['[', ']', '{', '}', '(', ')', '[', '***']

for (i = 0; i < s.length - 1; i += 2) {
  let result = different(s[i], s[i + 1]);
  console.log(result)
}

function different(a, b) {
  let match =
    (a === '(' && b === ')') ||
    (a === '[' && b === ']') ||
    (a === '{' && b === '}')
  return `"${a}" and "${b}" ${match ? '' : 'do not'} match`
}

A more scalable approach would put represent the syntax in data, like this...

const s = ['[', ']', '{', '}', '(', ')', '[', '***']
const delimiters = {
  '[': ']',
  '(': ')',
  '{': '}',
}

for (i = 0; i < s.length - 1; i += 2) {
  let result = different(s[i], s[i + 1]);
  console.log(result)
}

function different(a, b) {
  let match = delimiters[a] === b;
  return `"${a}" and "${b}" ${match ? '' : 'do not'} match`
}

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!