问题
在使用Zopfli.min.js压缩/使用pako.js解压缩的过程中,我的整数 2D 数组被分解为全 0 的数组。
故事
在我的 JavaScript 项目中,我想添加一个功能来将我的大型二维数组保存为 JSON 文件的属性。为了压缩数据大小,我尝试使用一些与Zlib
. 我使用Zopfli.min.js进行压缩,使用pako.js进行解压缩。
发生了什么
我将二维数组压缩为 zlib 格式并尝试对其进行解压缩。然而,当我检查解压后的二维数组对象的内容时console.log
,发现里面的所有值都是0
. 数组中的信息在压缩/解压过程中被破坏。
过程细节
我big2DArray
使用Zopfli.min.js
.
//compression
/** @type {(Array.<number>|Uint8Array)} */
const plain = big2DArray;
/** @type {Zopfli.Deflate} */
const compressor = new Zopfli.Deflate(plain);
/** @type {Uint8Array} */
const compressed = compressor.compress();
//wrapping
const obj = {
big2DArray:compressed,
someOtherData:"foo"
}
//createJSON
const json = JSON.stringify(obj);
我下载了 JSON 文件,其中的内容如下:
big2DArray:{"0":43,"1":2,"2":19,"3":154,"4":0,"5":24,"6":2,"7":99,"8":1,"9":0,"10":3,"11":84,"12":9,"13":44}
下载 JSON 文件后,我尝试使用以下方法解压缩它pako
:
const obj = JSON.parse(reader.result);
//decompressing
const compressed = obj.big2DArray;
console.log(`compressed:%o`,compressed)
//->big2DArray: {"0":43,"1":2,"2":19,"3":154,"4":0,"5":24,"6":2,"7":99,"8":1,"9":0,"10":3,"11":84,"12":9,"13":44}
// Pako magic
const decompressed = pako.inflate(compressed);
console.log(`decompressed:%o`,decompressed);
console.log(
decompressed:%o的结果,decompressed);
是 601 x 601 大小的 2D 数组,条目为零:
big2DArray:
[[0,0,0,0,0,0,0,0,...],[0,0,0,0,0,0,0,...],...]
怎么了?任何信息,将不胜感激。