所以,我尝试有一天,当我在堆栈溢出碰到这个问题就来了,并得到了好奇:在Javascript中数组的最大尺寸(在JavaScript中数组的最大大小).
问题是,JavaScript中数组的最大深度是多少?
深度我的意思是你可以在一个数组中嵌入一个数组,直到JavaScript放弃?
[1] // Depth Level: 1
[1, [2]] // Depth Level: 2
[1, [2, [3]]] // Depth Level: 3
[1, [...]] // Depth Level: x?
Run Code Online (Sandbox Code Playgroud)
它是否依赖于机器,是否基于编译器?
不,我不确定这是否有任何实际用途,但它仍然是我很好奇的东西.
我已经查看了有关此问题的一些答案/问题,但尚未找到解决方案。
我有一个包含文档(简化)的集合,如下所示:
{
"id": 123
"stuff": "abc"
"array":[
{
"id2":456
"properties": [
{
"id3": 789
"important": true
}
]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想检查for我的集合中的每个文档,for每个array对象array,for每个对象properties,如果有的important: true话。然后返回:
"id": 123
"id2": 456
"id3": 789
Run Code Online (Sandbox Code Playgroud)
我尝试过使用:
client.queryDocuments(self.collection._self, querySpec).toArray(function(err, results) {
if (err) {
callback(err);
} else {
callback(null, results[0]);
}
});
Run Code Online (Sandbox Code Playgroud)
但问题是数组有最大字符数限制。如果我的收藏有数百万份文档,这可能会超出。(Javascript增加最大数组大小)
或者,我误解了上面的问题吗?它是在谈论数组中的对象数量(其中每个对象可以具有无限的对象字符长度吗?)
因此,我正在寻找一个for loop类似的解决方案,其中返回每个文档,我进行分析,然后移动到下一个/并行执行它们。
任何见解将不胜感激。
我想在 Javascript 中创建一个大数组并编写了以下代码,但由于 OOM 而不起作用
let N = 125000000;
let numbers = [];
for (let i = 0; i < N; i++) {
numbers[i] = Math.round(Math.random()*10000);
}
Run Code Online (Sandbox Code Playgroud)
然后我写了“让数字=新数组(N);” 相反,它适用于 N (125000000),但不适用于更大的 N (200000000)。然后我使用了 Uint32Array,它适用于更大的 N。它最多可达 N = 2^31-1。Javascript 中 []、new Array(size)、Uint32Array 的大小有限制吗?我猜 Uint32Array 的最大大小是 2^31-1。我还想知道为什么 new Array(N) 的限制比 [] 更高。谢谢
我正在尝试创建一个大小的数组2^32 = 4294967296,因为我试图通过运行筛选算法获得所有素数直到2 ^ 32.但是,该数组中的任何操作我都会收到以下错误:
致命错误:CALL_AND_RETRY_LAST分配失败 - 处理内存不足
中止陷阱:6
在上述情况下我该怎么办?
我对JavaScript比较熟悉,最近我被告知JavaScript数组包含一个length类型的变量Number.当数组更新为数组中的元素数时,此长度会自动更新.
但是,我也被告知在内部,JavaScript为其Number类使用64位浮点表示.我们知道浮点运算不能精确地表示其范围内的所有整数.
所以我的问题是,大型数组会发生什么,哪些length + 1不能完全代表序列中的下一个最大整数?