如何压缩(压缩)一个JS数组

我将如何压缩数组?

我正试图压缩一个数组。 我已经尝试使用lzstring库和转换为/从string,但我得到null / 0 / []解压缩。

这就是我正在做的事情:

 var array = []; for (var i = 0; i < 1024; i++) { array[array.length] = i % 255; } var string = String.fromCharCode.apply(null, array); var compressed = LZString.compress(string); var decompressed = LZString.decompress(compressed); var dearray = []; for (var i = 0; i < decompressed.length; i++) { dearray[i] = decompressed.charCodeAt(i); } 

http://jsfiddle.net/ZV5Za/18/

这个问题似乎是你将数组形成一个string,然后回来。

为什么不使用String.prototype.split() / Array.prototype.join() ( Fiddle )

 var string = array.join('|'); var dearray = decompressed.split('|'); 

或者甚至更好: JSON.stringify() / JSON.parse() ( Fiddle )
(这实际上保留了数据types):

 var string = JSON.stringify(array); var dearray = JSON.parse(decompressed); 

不过,我不知道如何解决你正在使用的“string – > array”步骤。

事实certificate,这工作,我刚刚有一个错字。

http://jsfiddle.net/ZV5Za/20/

 var array = []; for (var i = 0; i < 1024; i++) { array[array.length] = i % 255; } var string = String.fromCharCode.apply(null, array); var compressed = LZString.compress(string); var decompressed = LZString.decompress(compressed); var dearray = []; for (var i = 0; i < decompressed.length; i++) { dearray[i] = decompressed.charCodeAt(i); } console.log(array.length, array); console.log(string.length, string); console.log(compressed.length, compressed); console.log(decompressed.length, decompressed); console.log(dearray.length, dearray);