Guest User

parse rrays

a guest
Aug 31st, 2022
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. export function ParseArrayValues(str) {
  2.     let result = [];
  3.     let output = [];
  4.     let trainyard = [];
  5.     let value = -1;
  6.     for (let i = 0; i < str.length; i++) {
  7.         let exp = str[i];
  8.         if (exp == ' ') continue;
  9.         if (exp >= '0' && exp <= '9') {
  10.             if (value == -1) value = 0;
  11.             value = value * 10 + parseInt(exp.toString());
  12.             continue;
  13.         }
  14.         else if (value != -1) {
  15.             output.push(value);
  16.             value = -1;
  17.         }
  18.         if (exp == ',') continue;
  19.         switch (exp) {
  20.             case '[':
  21.                 output.push(exp);
  22.                 break;
  23.             case ']':
  24.                 while (trainyard.length > 0) {
  25.                     let c = trainyard.pop();
  26.                     if (c == '[') break;
  27.                     output.push(c);
  28.                 }
  29.                 output.push(exp);
  30.                 break;
  31.             default:
  32.                 if (!(exp >= '0' && exp <= '9')) {
  33.                     //error
  34.                 }
  35.                 break;
  36.         }
  37.     }
  38.     if (value != -1) {
  39.         output.push(value);
  40.         value = -1;
  41.     }
  42.     while (trainyard.length > 0) {
  43.         output.push(trainyard.pop());
  44.     }
  45.     var arrayStack = [];
  46.     var curArray = [];
  47.     while (output.length > 0) {
  48.         let exp = output.shift();
  49.         switch (exp) {
  50.             case '[':
  51.                 //var t = [];
  52.                 //curArray.push(t);
  53.                 arrayStack.push(curArray);
  54.                 curArray = [];
  55.                 break;
  56.             case ']':
  57.                 var t = arrayStack.pop();
  58.                 t.push(curArray);
  59.                 curArray = t;
  60.                 break;
  61.             default:
  62.                 curArray.push(exp);
  63.                 break;
  64.         }
  65.     }
  66.     return curArray[0];
  67. }
Advertisement
Add Comment
Please, Sign In to add comment