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-带键的数组和对象之间的性能差异是什么?_Javascript_Arrays_Memory - Fatal编程技术网

Javascript-带键的数组和对象之间的性能差异是什么?

Javascript-带键的数组和对象之间的性能差异是什么?,javascript,arrays,memory,Javascript,Arrays,Memory,我现在正在为我的训练营做一项任务,我正在玩通过对象的循环 对于我正在做的事情,明智的做法是拥有其他对象的对象。唯一的问题是循环(我可以用Object.keys()之类的东西来做) 但是我想知道带键的数组和带键的对象之间有什么区别?我习惯于只有对象/字典才有键的语言,对于我来说有一个可以有键的数组有点奇怪 这里有什么性能差异吗?例如,数组是否总是彼此相邻地存储在内存中,而对象不是,因此不允许数组具有某些函数 通常,您不会在JS中向数组添加键控属性。仅使用数组的索引属性,即数字索引。问题的答案是,没

我现在正在为我的训练营做一项任务,我正在玩通过对象的循环

对于我正在做的事情,明智的做法是拥有其他对象的对象。唯一的问题是循环(我可以用Object.keys()之类的东西来做)

但是我想知道带键的数组和带键的对象之间有什么区别?我习惯于只有对象/字典才有键的语言,对于我来说有一个可以有键的数组有点奇怪


这里有什么性能差异吗?例如,数组是否总是彼此相邻地存储在内存中,而对象不是,因此不允许数组具有某些函数

通常,您不会在JS中向数组添加键控属性。仅使用数组的索引属性,即数字索引。问题的答案是,没有区别,两者都是相似的对象。使用数组的索引属性会更快,而且您可以依赖于索引的顺序。一旦您开始讨论内存布局,ECMAScript规范中就没有涉及到这些内容。要么选择一个目标实现进行讨论,比如V8,要么接受答案“这是一个实现细节”,在大多数引擎上,阵列都针对典型的阵列操作进行了大量优化。这是一个巨大的话题,我认为不可能在这里给出答案。给你一个提示(这篇文章是2012年的,可能已经过时了),你可以看看,它会让你知道这个话题有多复杂。你一点也不必担心,按照你喜欢的去做。对于高负载的计算,索引的整数数组是最快的一点,它适用于所有编程语言?