我是Javascript的新手,注意到你不需要指定一个数组的大小,经常看到人们动态地一个一个元素地创建数组。在其他语言中,这将是一个巨大的性能问题,因为你需要不断重新分配内存来增加数组的大小。
这在Javascript中是否不是一个问题?如果是,那么有没有可用的列表结构?
我是Javascript的新手,注意到你不需要指定一个数组的大小,经常看到人们动态地一个一个元素地创建数组。在其他语言中,这将是一个巨大的性能问题,因为你需要不断重新分配内存来增加数组的大小。
这在Javascript中是否不是一个问题?如果是,那么有没有可用的列表结构?
Javascript数组通常被实现为哈希表(与Javascript对象相同),但有一个额外的特性:它们有一个名为length
的属性,该属性的值是最高正整数键值加1。您可以使用字符串、浮点数甚至负数作为键值,但这不太明智。
这很可能取决于您使用的JavaScript引擎。
Internet Explorer使用稀疏数组和密集数组的混合来使其工作。更多细节可以在此处找到:http://blogs.msdn.com/b/jscript/archive/2008/04/08/performance-optimization-of-arrays-part-ii.aspx。
var a = []; a['cat'] ='meow';
。var a = { "1": 1, "2": 2};
a.length = 2;
for(var i=0;i<a.length;i++)
console.log(a[i]);
< p >a
会表现得几乎像一个数组,而且你也可以在它上面调用 Array.prototype 中的函数。
a[1]
也不会产生值。列出项目的正确代码应该使用for .. in
或使用例如console.log(a[''+(i+1)]);
。 - Michiel van der Blonka
的0索引后将起作用。我认为他试图表明数组只是具有数字作为其属性键的普通对象。 - Leonardo Raelea.length = 4;
for(var i=0;i
- Michiel van der BlonkJavascript数组不像C/C++或其他语言那样是真正的数组。因此,它们并不像真正的数组那样高效,但很容易使用,且不会抛出越界异常。