shadowvzs

Object Fishing

Sep 2nd, 2017
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset=utf-8 />
  5. <title>My recursion</title>
  6.  <script src="./db/filesystem.js"></script>
  7. </head>
  8. <body>
  9. <div id="out"></div>
  10. <script>
  11. var div=document.getElementById("out");
  12. var ObjInObj={
  13.     GetObjectById: function (obj,target, sqBrckt, withComma, range){
  14.         var str=JSON.stringify(obj);
  15.         var a,b=str.length,c=0,d=0,e = str.indexOf('"'+target+'"');
  16.         //a-used for current position in string
  17.         //b-json object string length, c - bracket counter: { }, d - bracket counter: [ ]
  18.         //e-unique string in object
  19.         if (e>-1){
  20.             a=e+1;
  21.             while (((c+d)<range)&&(a>=0)) {
  22.                 a--;
  23.                 switch (str.charAt(a)) {
  24.                   case "{": c++; break;
  25.                   case "}": c--; break;
  26.                   case "[": sqBrckt ? d++ : null; break;
  27.                   case "]": sqBrckt ? d-- : null; break;                   
  28.                 }
  29.             }  
  30.            
  31.             //a-start position in string for object
  32.             //e-ending position in string for object
  33.            
  34.             while ((e<b)&&((c>0)||(d>0))) {
  35.                 e++;
  36.                 switch (str.charAt(e)) {
  37.                   case "{": c++; break;
  38.                   case "}": c--; break;
  39.                   case "[": sqBrckt ? d++ : null; break;
  40.                   case "]": sqBrckt ? d-- : null; break;                   
  41.                 }              
  42.             }
  43.             var prev=str.charAt(a-1);
  44.             var next=str.charAt(e+1);
  45.  
  46.             withComma !== false ? (((prev == ",")&&(next != ",")) ? a-- : ((((prev != ",")||(prev == ","))&&(next == ",")) ? e++ : null)) : null
  47.            
  48.             return str.substring(a,e+1);
  49.         }
  50.         return "";
  51.     }, 
  52. }
  53.  
  54.  
  55.  
  56.                     //big object   target countSquarBrackets   ?   range:1 only target, target and siblings too
  57. div.innerHTML=ObjInObj.GetObjectById(fs.parent,"de1eplv23",true,false,6);
  58. </script>
  59. </body>
  60. </html>
Advertisement
Add Comment
Please, Sign In to add comment