Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组的计数位/字节大小_Javascript_Jquery_Byte - Fatal编程技术网

Javascript 数组的计数位/字节大小

Javascript 数组的计数位/字节大小,javascript,jquery,byte,Javascript,Jquery,Byte,我在Javascript中有一个数组,它有很多子数组。计算数组包含多少位/字节的最佳/最简单方法是什么?我将把数组发送到我的PHP服务器,它只能有5kB大 有没有本机方法?我对比特不太熟悉。如果我理解正确的话,8b/1B中适合1个字符(尽管这显然取决于编码)。最好的方法是循环遍历所有数组并计算字符数吗?您可以这样做:(为了得到真正好的估计值) 例如:在该嵌套数组中设置ALOK: var g=[1,2,3,['a','b',['-','+','&'],5],,“שלום”,“יבר”] JSON.

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

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

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

例如:在该嵌套数组中设置ALOK:

var g=[1,2,3,['a','b',['-','+','&'],5],,“שלום”,“יבר”]

JSON.stringify(g).替换(/[\[\]\,\“]/g')

其长度为:17(字节)


通过这种方式-您可以利用json的优点。解析大部分工作都是通过json完成的,然后删除额外的数组持有者。

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

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

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

当数组转换为字符串时,可以使用获取数组大小(以字节为单位)

示例:

constmyarray=[{test:1234,foo:false,bar:true}];

console.info(new Blob([JSON.stringify(myArray)]).size);/38
Quoting
jQuery.param
docs:“注意:由于没有一致同意的参数字符串规范,因此不可能使用此方法对复杂的数据结构进行编码,从而在支持此类输入的所有语言中都能理想地工作。使用JSON格式来替代复杂数据的编码。“OP想知道数组拥有多少字节。您的解决方案没有考虑额外的字符,这些字符代表数组<代码> []/COD>和<代码> 等。所以根据你的解决方案--[1]的长度是3,这是不正确的(它的长度是1)。@RoyiNamir他是这么说的,但我不认为这是他的意思。如果他只能将5kB传输到服务器,则序列化数据的长度将计算在内。而
[1]
的长度为8,因为JavaScript将
1
存储为64位IEEE 754浮点数。你看,他的问题模棱两可。@Prinzhorn我读到:“数组能容纳多少字节。”这就是我的答案@RoyiNamir我读到:“我将把数组发送到我的PHP服务器”这就是我的答案。但是够了;)看看这个链接,看起来更准确。小心点,我认为它对于单次使用来说非常优雅,但是当我使用它来“测量”我用作高速传入websocket数据缓冲区的数组的大小时,我遇到了大量内存泄漏(当它增长时,每5秒测量一次)…它在几分钟内将内存使用量从最初的25MB完全提高到1GB…非常奇怪
var g = JSON.stringify(myBigNestedarray).replace(/[\[\]\,\"]/g,''); //stringify and remove all "stringification" extra data
alert(g.length); //this will be your length.
 "123ab-+&5שלוםיגבר"