Tests:
  • split - join

    x
     
    isBalanced1 = (s, o, v, rx1, rx2) => {
      rx1 = /[^\(\)\{\}\[\]]/g;
      rx2 = /\[\]|\{\}|\(\)/g;
      v = ['()', '{}', '[]', ''];
      o = s.replace(rx1, '');
      for (let i = 0; i < o.length; i += 0.5) { 
        o = o.split(rx2).join``;
      }
      return v.includes(o);
    };
    const test = '[[[{{{((()))}}}]]]';
    console.log(isBalanced1(test));
  • replace

     
    isBalanced2 = (s, o, v, rx1, rx2) => {
      rx1 = /[^\(\)\{\}\[\]]/g;
      rx2 = /\[\]|\{\}|\(\)/g;
      v = ['()', '{}', '[]', ''];
      o = s.replace(rx1, '');
      for (let i = 0; i < o.length; i += 0.5) { 
        o = o.replace(rx2, '');
      }
      return v.includes(o);
    };
    const test = '[[[{{{((()))}}}]]]';
    console.log(isBalanced2(test));
  • slice and concat

     
    isBalanced3 = (s, o, v, rx1, rx2) => {
      rx1 = /[^\(\)\{\}\[\]]/g;
      rx2 = /\[\]|\{\}|\(\)/g;
      v = ['()', '{}', '[]', ''];
      o = s.replace(rx1, '');
      for (let i = 0; i < o.length; i++) { 
        if (v.includes(`${o[i]}${o[i + 1]}`)) {
          o = o.slice(0, i).concat(o.slice(i + 2, o.length));
          i -= 2;
        }
      }
      return v.includes(o);
    };
    const test = '[[[{{{((()))}}}]]]';
    console.log(isBalanced3(test));
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    split - join
    replace
    slice and concat

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 6 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36
Chrome 70 on Mac OS X 10.14.0
View result in a separate tab
Test name Executions per second
split - join 56351.1 Ops/sec
replace 75195.3 Ops/sec
slice and concat 62843.1 Ops/sec