如何压缩(压缩)一个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,这工作,我刚刚有一个错字。
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);