我有一个2D JS对象数组,我想尽可能地压缩这些数据,以便将数据存储到一个编码为64位URI组件的查询字符串中。到目前为止,我设法通过存储字符代码而不是字符串将我的对象压缩为2071个字符,存储一个标识程序中颜色而不是十六进制代码的数字,并将对象属性名称缩短为一个字符。
var width = 33; //33
var height = 18; //33
// make 2d array
var tree = new Array(height);
for(i=0; i<height; ++i){
tree[i] = new Array(width);
}
// fill array with defaults
for(i=0; i<tree.length; ++i){
for(j=0; j<tree[i].length; ++j){
tree[i][j] = {
s:0, // string char code
c:[0], // color indices
i:0, // current color index
r:[0,0], // rate of animation
b:2 // bgColor color index
}
}
}
然后我用json对对象进行字符串化,然后使用lz-string js库创建一个压缩的URI组件字符串:
var treeStringified = JSON.stringify(tree);
var compressed = LZString.compressToEncodedURIComponent(treeStringified);
console.log(compressed);
console.log(compressed.length);
string = LZString.decompressFromEncodedURIComponent(compressed);
console.log(string);
console.log(string.length);
到目前为止,压缩的URI组件字符串最终为2071个字符,其默认值为“空”值。我有什么方法可以减少更多?