计算数组的位/字节大小

law*_*wls 10 javascript jquery byte

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

是否有本地方法?我不是很熟悉比特.如果我理解正确1个字符适合8b/1B(虽然它明显取决于编码).最好的方法是循环遍历所有数组并计算字符数吗?

Kna*_*ģis 8

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

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

在获得该字符串后,您需要stringValue.length * 8获取大小,假设a)值为ASCII或b)您对所有值进行了url编码,以便将Unicode字符转换为ASCII.*8有没有得到这些位,但既然你提到限制是5kB - 那些很可能是字节,所以你跳过乘法.


Roy*_*mir 7

您可以执行以下操作:(为了获得良好的估计)

var g = JSON.stringify(myBigNestedarray).replace(/[\[\]\,\"]/g,''); //stringify and remove all "stringification" extra data
alert(g.length); //this will be your length.
Run Code Online (Sandbox Code Playgroud)

例如:看一下这个嵌套数组:

var g=[1,2,3,['a','b',['-','+','&'],5],['????','????']]

JSON.stringify(g).replace(/[\[\]\,\"]/g,'')

 "123ab-+&5????????"
Run Code Online (Sandbox Code Playgroud)

它的长度是:17(字节)

这样-您可以利用其中的优势json.parse完成大部分工作-然后删除多余的阵列支架。

  • 喜欢''''' (2认同)