Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // --- Test Example ---
- var varArray = [];
- varArray['strings'] = ["firstname","lastname","hometown"];
- varArray['booleans'] = [false, false, false, false, true, false, false, true, true, false, true, true, true, false];
- varArray['integers'] = [1000, 123456789, 50, 1, 9, 10, 133, 500, 15351380374013745, 1, 2, 3, 10, 55, 44,99, 919191];
- console.log("Original - Strings: "+varArray['strings']);
- console.log("Original - Booleans: "+varArray['booleans']);
- console.log("Original - Integers: "+varArray['integers']);
- var exportedString = CompressVariables(varArray);
- console.log("Exported: "+exportedString);
- var impArray = DecompressVariables (exportedString);
- console.log("Imported - Strings: "+impArray['strings']);
- console.log("Imported - Booleans: "+impArray['booleans']);
- console.log("Imported - Integers: "+impArray['integers']);
- /*
- ----------- Save System - Part 1 -----------
- CompressVariables(inputArray) : returns a compact string from a multidimensional array.
- ... CompressBooleans(inputArray) : returns a compact string from a list of booleans.
- ... CompressIntegers(inputArray) : returns a compact string from a list of integers.
- DecompressVariables(inputString) : returns a multidimensional array from a compact string.
- ... DecompressBooleans(inputString) : returns an array of booleans from a compact string.
- ... DecompressIntegers(inputString) : returns an array of integers from a compact string.
- */
- function CompressVariables (inputArray)
- {
- return inputArray['strings'].join('.') + ":" + CompressBooleans(inputArray['booleans']) + ":" + CompressIntegers(inputArray['integers']);
- }
- function CompressBooleans (inputArray)
- {
- // array of booleans -> string of booleans:
- var compressionLevel1 = "";
- inputArray.forEach(b => compressionLevel1 += b ? "1" : "0");
- // string of booleans -> int(2):
- var compressionLevel2 = parseInt(compressionLevel1, 2);
- // int(2) -> string(36):
- var outputString = compressionLevel2.toString(36);
- // add leading 0 counter:
- var leadingZeroCount = 0;
- for (var b of inputArray)
- {
- if (b) break;
- leadingZeroCount++;
- }
- outputString += "#"+leadingZeroCount.toString();
- return outputString;
- }
- function CompressIntegers (inputArray)
- {
- var compressedStrings = [];
- inputArray.forEach(i => compressedStrings.push(i.toString(36)));
- return compressedStrings.join('.');
- }
- function DecompressVariables (inputString)
- {
- var splitArray = inputString.split(':');
- var importedArray = [];
- importedArray['strings'] = splitArray[0].split('.');
- importedArray['booleans'] = DecompressBooleans(splitArray[1]);
- importedArray['integers'] = DecompressIntegers(splitArray[2]);
- return importedArray;
- }
- function DecompressBooleans (inputString)
- {
- var splitStrings = inputString.split('#');
- var leadingZeroCount = splitStrings[1];
- // string(36) -> int(2):
- var decompressionLevel2 = parseInt(splitStrings[0], 36);
- // int(2) -> string of booleans:
- var decompressionLevel1 = ""
- for (var i = 0; i < leadingZeroCount; i++)
- {
- decompressionLevel1 += "0";
- }
- decompressionLevel1 += decompressionLevel2.toString(2);
- // string of booleans -> array of booleans:
- var stringArray = decompressionLevel1.split('');
- var outputArray = [];
- stringArray.forEach(x => outputArray.push(x == '1' ? true : false))
- return outputArray;
- }
- function DecompressIntegers (inputString)
- {
- var decompressedStrings = inputString.split('.');
- var decompressedIntegers = [];
- decompressedStrings.forEach(s => decompressedIntegers.push(parseInt(s, 36)));
- return decompressedIntegers;
- }
Advertisement
Add Comment
Please, Sign In to add comment