如何压缩(压缩)JS数组

时间:2014-05-20 08:54:08

标签: javascript node.js compression

我如何压缩数组?

我正在尝试压缩数组。我尝试过使用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);
}

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

2 个答案:

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

原来它确实有用,我只是输了一个错字。

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