数组的计数位/字节大小

问题描述 投票:11回答:3

我有一个Javascript数组,其中包含很多子数组。计算数组容纳多少位的最佳/最简单方法是什么?我要将该数组发送到我的PHP服务器,它只能大5kB。

是否有本机方法?我不太熟悉位。如果我理解正确,则1个字符适合8b / 1B(尽管显然取决于编码)。最好的方法是遍历所有数组并计数字符吗?

javascript jquery byte
3个回答
8
投票

首先,您必须将数组转换为用于将数据传输到服务器的字符串表示形式。数组的大小无关紧要,因为将要传输的是该字符串。根据序列化该阵列的方式,大小差异可能非常明显。

序列化数组的可能选项是jQuery.param()方法或jQuery.param()。您还可以构建自己的方法来转换值,以便您的PHP代码可以理解它。

拥有该字符串之后,请使用JSON.stringify()来获取大小,假设a)值是ASCII或b)对所有值进行url编码,以便将Unicode字符转换为ASCII。 JSON.stringify()是用来获取位的,但是由于您提到的限制是5kB-这些很可能是字节,因此您跳过了乘法。


9
投票

您可以执行此操作:(为了获得准确的估计)

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,'')的好处完成了大部分工作-然后删除了多余的阵列支架。


0
投票

[将其转换为字符串时,可以使用 "123ab-+&5שלוםיגבר" 获取以字节为单位的数组大小。

示例:

json.parse
© www.soinside.com 2019 - 2024. All rights reserved.