我有一个Javascript数组,其中包含很多子数组。计算数组容纳多少位的最佳/最简单方法是什么?我要将该数组发送到我的PHP服务器,它只能大5kB。
是否有本机方法?我不太熟悉位。如果我理解正确,则1个字符适合8b / 1B(尽管显然取决于编码)。最好的方法是遍历所有数组并计数字符吗?
首先,您必须将数组转换为用于将数据传输到服务器的字符串表示形式。数组的大小无关紧要,因为将要传输的是该字符串。根据序列化该阵列的方式,大小差异可能非常明显。
序列化数组的可能选项是jQuery.param()
方法或jQuery.param()
。您还可以构建自己的方法来转换值,以便您的PHP代码可以理解它。
拥有该字符串之后,请使用JSON.stringify()
来获取大小,假设a)值是ASCII或b)对所有值进行url编码,以便将Unicode字符转换为ASCII。 JSON.stringify()
是用来获取位的,但是由于您提到的限制是5kB-这些很可能是字节,因此您跳过了乘法。
您可以执行此操作:(为了获得准确的估计)
stringValue.length * 8
例如:看一下这个嵌套数组:
*8
var g = JSON.stringify(myBigNestedarray).replace(/[\[\]\,\"]/g,''); //stringify and remove all "stringification" extra data
alert(g.length); //this will be your length.
var g=[1,2,3,['a','b',['-','+','&'],5],['שלום','יגבר']]
其长度为:17(字节)
这种方式-您利用JSON.stringify(g).replace(/[\[\]\,\"]/g,'')
的好处完成了大部分工作-然后删除了多余的阵列支架。
[将其转换为字符串时,可以使用 "123ab-+&5שלוםיגבר"
获取以字节为单位的数组大小。
示例:
json.parse