Lou*_*pax 0 javascript language-agnostic
我知道如何使用它们,但我想知道它们是如何工作的,以及它们与常规数组相比有多慢.
我猜是这个:
myArray['value'] = 10;
myArray['another_key'] = 11;
Run Code Online (Sandbox Code Playgroud)
被翻译成这样的东西:
myArray[0][0] = 'value';
myArray[0][1] = 10;
myArray[1][0] = 'another_key';
myArray[1][1] = 11;
Run Code Online (Sandbox Code Playgroud)
[编辑]
看起来我的猜测是错误的,并且数组的键实际上是对象的属性.所以,收集我在一个地方得到的所有答案:
这是完全不同的.
首先,永远不要将数组用作关联数组.数组仅适用于数字指标.例如:
var a = [];
a['foo'] = 'bar';
console.log(a.length) // prints 0
Run Code Online (Sandbox Code Playgroud)
如果你认为它的元素应该保持一定的顺序(例如在PHP中),那么对象就不适合关联数组.事实并非如此.但是对象适用于哈希表,这在大多数情况下是足够的.
在内部,数组也只是对象.所以当你有一个数组:
var a = [];
a[0] = 42;
Run Code Online (Sandbox Code Playgroud)
然后0
实际上转换为字符串并作为属性添加到对象(注意最后一行(__proto__: Object
)):
您也可以访问该物业a['0']
.
当然可能是这些操作在内部针对阵列进行了优化,但这取决于引擎.
所以最后,a[0] = 42;
或o['value'] = 42;
(与o = {}
)产生相同的结果
用它们访问它们a[0]
,o['value']
或者o.value
同样地访问它们.
归档时间: |
|
查看次数: |
463 次 |
最近记录: |