3

我目前有一个看起来像这样的数组:

["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]

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

有什么方法可以将数组加密为可在 URL 字符串中使用并稍后解密?

4

3 回答 3

6

您可以使用atobbtoa功能。

myArray = ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
btoa(JSON.stringify(myArray)) // "WyJzY3JlZW4iLCJsZWZ0X3NpZGUiLCJsZWZ0X3NpZGUiLCJyaWdodF9zaWRlIiwibGVmdF9zaWRlIiwicmlnaHRfc2lkZSIsImxlZnRfc2lkZSIsInJpZ2h0X3NpZGUiXQ=="

然后您可以将其转换回原始数组

array = JSON.parse(atob(str))

如果您包含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

要解压缩,

array = JSON.parse(LZString.decompressFromBase64(str));

小提琴

于 2013-08-10T05:44:26.760 回答
0

这可能会帮助你...

<script>

var uri='http://www.site.com/app.html?["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]';
var uri_encode=encodeURIComponent(uri);
document.write(uri_encode);
document.write("<br>");
document.write(decodeURIComponent(uri_encode));

</script>

提琴手

于 2013-08-10T05:47:18.917 回答
0

这应该有效。

var a = [“屏幕”、“left_side”、“left_side”、“right_side”、“left_side”、
“右侧”、“左侧”、“右侧”];

var stringa = a.toString;
var encodea = encodeURI(stringa);

然后像这样使用它

var site = "http://www.site.com/app.html?array=" + a;
于 2013-08-10T05:47:37.917 回答