我如何压缩数组?
我正在尝试压缩数组。我尝试过使用lz-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);
}
答案 0 :(得分:1)
问题似乎在于你将数组形成一个字符串,然后再返回。
为什么不使用String.prototype.split()
/ Array.prototype.join()
(Fiddle):
var string = array.join('|');
var dearray = decompressed.split('|');
或者甚至更好:JSON.stringify()
/ JSON.parse()
(Fiddle)
(这实际上保留了数据类型):
var string = JSON.stringify(array);
var dearray = JSON.parse(decompressed);
我不知道你如何修复你正在使用的“string - &gt; array”步骤。
答案 1 :(得分: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);
}
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);