Javascript 将数组解密为字符串

Javascript 将数组解密为字符串,javascript,jquery,arrays,url,Javascript,Jquery,Arrays,Url,我当前有一个如下所示的数组: ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"] 我现在想以某种方式对其进行加密,以便将其用作URL,如:http://www.site.com/app.html?array=...这是因为我想允许用户共享他们的阵列 是否有任何方法可以将数组加密到URL字符串中,并在以后对其进行解密?您可以使用atob和b

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

["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]
我现在想以某种方式对其进行加密,以便将其用作URL,如:
http://www.site.com/app.html?array=...
这是因为我想允许用户共享他们的阵列


是否有任何方法可以将数组加密到URL字符串中,并在以后对其进行解密?

您可以使用
atob
btoa
函数

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))

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

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));
这可能会帮助你

<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>

var uri='1〕http://www.site.com/app.html?[“屏幕”、“左侧”、“左侧”、“右侧”、“左侧”、“右侧”、“右侧”、“右侧”、“左侧”、“左侧”、“左侧”、“右侧”、“右侧”、“右侧”];
var uri_encode=encodeURIComponent(uri);
文件写入(uri_编码);
文件。写(“
”); 写入(解码组件(uri_编码));

这应该行得通

var a = ["screen", "left_side", "left_side", "right_side", "left_side", "right_side", "left_side", "right_side"]; var stringa = a.toString; var encodeda = encodeURI(stringa); 变量a=[“屏幕”、“左侧”、“左侧”、“右侧”、“左侧”, “右侧”、“左侧”、“右侧”]; var stringa=a.toString; var encodeda=encodeURI(stringa); 然后像这样使用它

var site = "http://www.site.com/app.html?array=" + a;
变量站点=”http://www.site.com/app.html?array=“+a;“加密”?我想你的意思是“编码”。@nnnnnn我想这取决于你如何看待它,我想安全地共享一个数组,而不会使字符串太长。而且你的单词只能是左侧、右侧和屏幕?@xanatos还有一些其他单词,但理论上它们都是固定的是的,所以我基本上可以把它们转换成固定的数字。我会给这个解决方案增加压缩。请参见《谢谢@Paul》中的
compressToBase64
。我补充了这方面的例子。您可以使用它将该数组压缩到一半大小。我已经看到使用
LZString.compressToUTF16
将表格数据存储在
localStorage
中,并使用我一直在使用的库实现了大约5:1的压缩