将数组解密为字符串

wou*_*_be 3 javascript arrays url jquery

我目前有一个如下所示的数组:

["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
Run Code Online (Sandbox Code Playgroud)

我现在想以某种方式加密它,所以我可以将它用作URL,例如:http://www.site.com/app.html?array=...这是因为我想允许用户共享他们的数组.

有没有办法加密一个数组,它可以在URL字符串中使用并在以后解密?

Bri*_*and 6

您可以使用atobbtoa功能.

myArray = ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
btoa(JSON.stringify(myArray)) // "WyJzY3JlZW4iLCJsZWZ0X3NpZGUiLCJsZWZ0X3NpZGUiLCJyaWdodF9zaWRlIiwibGVmdF9zaWRlIiwicmlnaHRfc2lkZSIsImxlZnRfc2lkZSIsInJpZ2h0X3NpZGUiXQ=="
Run Code Online (Sandbox Code Playgroud)

然后,您可以将其转换回orignal数组

array = JSON.parse(atob(str))
Run Code Online (Sandbox Code Playgroud)

如果包含LZString(如注释中所述),则可以获得更短的字符串.

var str = btoa(JSON.stringify(myArray)); // 132 characters
var str = LZString.compressToBase64(JSON.stringify(myArray)); // 72 characters
var str = LZString.compressToBase64(myArray.toString()); // 64 characters
Run Code Online (Sandbox Code Playgroud)

要解压缩,

array = JSON.parse(LZString.decompressFromBase64(str));
Run Code Online (Sandbox Code Playgroud)

小提琴