Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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 node.js是否提供了真正的阵列实现?_Javascript_Arrays_Node.js - Fatal编程技术网

Javascript node.js是否提供了真正的阵列实现?

Javascript node.js是否提供了真正的阵列实现?,javascript,arrays,node.js,Javascript,Arrays,Node.js,我使用node.js作为我的服务器平台,我需要处理一个包含65000项的非稀疏数组 Javascript数组不是真正的数组,而是散列。索引访问伴随着索引到字符串的转换,然后进行散列查找。(请参见中的“阵列”部分) 所以,我的问题是。node.js是否实现了真正的数组?调整或删除项目确实会让我们付出代价,但真正的随机访问没有任何字符串索引,然后是散列查找 谢谢 编辑 我可能要求太多,但我的数组存储Javascript对象。不是数字。我不能将它分解成许多类型化数组,每个数组都包含数字原语或字符串,因

我使用node.js作为我的服务器平台,我需要处理一个包含65000项的非稀疏数组

Javascript数组不是真正的数组,而是散列。索引访问伴随着索引到字符串的转换,然后进行散列查找。(请参见中的“阵列”部分)

所以,我的问题是。node.js是否实现了真正的数组?调整或删除项目确实会让我们付出代价,但真正的随机访问没有任何字符串索引,然后是散列查找

谢谢

编辑

我可能要求太多,但我的数组存储Javascript对象。不是数字。我不能将它分解成许多类型化数组,每个数组都包含数字原语或字符串,因为对象有嵌套的子对象。尝试使用类型化数组将导致代码无法维护

EDIT2

我一定错过了什么。为什么它必须是全部还是全部?要么是不带真数组的真Javascript,要么是不带Javascript优点的C风格扩展。拥有一个真正的Javascript(非类型化)对象数组是否与Javascript的本质相矛盾?Java和C#有
列表
,这正是我想要的。C#与
列表
更接近

Node.js确实提供了一个可能正是您想要的:

缓冲区类似于整数数组,但对应于V8堆外的原始内存分配。无法调整
缓冲区的大小

Node.js有:
Int8Array、Uint8Array、Int16Array、Uint16Array、Uint16Array、Int32Array、Uint32Array、Float32Array


我认为它们正是您所需要的。

您希望使用低级JavaScript(LLJS)以C风格直接操作所有内容

请注意,根据上面的链接,LLJS数组更像您正在寻找的数组(真正的类C数组),而不是Javascript数组

Node.js中有一个LLJS的实现,因此您可能不必编写自己的Node.js C扩展。也许这个实现会起作用:

不是本质上的,不是


但是,根据您的专业水平,您可以使用Node的C/C++扩展工具编写“真正”的数组扩展。请参见

缓冲区用于直接处理二进制数据。我怀疑这是OP想要的。关于Edit2,你自己说过,没有非稀疏Javascript数组。那正是你的问题,对吗?请记住,通过C风格的扩展,Node.js无论如何都是在C中完成的。您只需编写C扩展,但仍然可以使用javascript语法访问node.js C扩展。另外,可能已经有一个node.js(即“C扩展”)供您使用,LLJS(请参阅我的答案)。你不能将你的JS对象存储在一个“LLJS数组”中吗?
LLJS是一种类型化的JavaScript方言,它提供了一个类似C的类型系统,可以进行手动内存管理。它可以编译成JavaScript,让您可以轻松地编写节省内存和无GC暂停的代码,简言之,LLJS是JavaScript和C的私生子。LLJS是早期的研究原型工作,所以不要期望任何坚如磐石的东西。这里的研究目标是探索高级动态类型语言中的低级静态类型特征。将其视为C中的内联程序集,或C#中的不安全关键字。它不漂亮,但它完成了任务。
-不用于生产。@sajawikio-我知道Javascript中没有数组这样的东西。但是node.js是一个服务器端平台。它们能够以类似于LLJS的方式扩展Javascript。然而,我不能采用
早期研究原型工作
。C#like
List
是我想要的,我不明白为什么没有。好的一点,除了LLJ,我不知道除了本机V8实现之外还有什么(正如你所说,它就像一个稀疏的ECMAscript数组)除了制作自己的实现之外,也许其他人可以找到类似LLJS的东西,但是更成熟,更适合产品使用。