计算数组的位/字节大小

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

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

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

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

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

你可以这样做:(为了得到真正好的估计)

 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],['שלום','יגבר']]

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

  "123ab-+&5שלוםיגבר" 

它的长度是:17(字节)

这种方式 – 你使用json.parse的好处来完成大部分工作 – 然后删除额外的数组持有者。