在javascript中哪一个更有效率?在迭代期间哪一个更快?哪一个花在网络上的时间较短?
我不希望答案会基于附加到对象,数组或类似对象的数组的实用程序方法。
为了对我正在讨论的场景有所了解,请查看以下2个选项。
选项1
["A1", "A2", "A3"]
选项2
{"0":"A1", "1": "A2", "2": "A3", "length": 3}
哪一个在迭代期间更快?哪一个花在网络上的时间较短?
答案 0 :(得分:0)
我认为数组是最好的,因为它们只是一个数组。如果使用对象,它还有许多其他属性可供获取。
但是不要误会我的意思,因为在正确的情况下,对象比数组更有用,但我认为获取最快的是数组。
答案 1 :(得分:0)
我不同意GreenHawk的回答。 JavaScript 中的数组只是具有数组原型的普通对象。因此,您的数据的索引实际上是整数=>数据
这可以通过以下代码段看到:
var arr = ["javascript", "is", "a", "strange", "language."]
delete arr["3"]; // because an array is actually a map of "indicies" to values, strings work as well here.
console.log(arr.length); //=> 5
console.log(arr);
就迭代而言,使用数组可能是您最好的选择,因为您的浏览器可能能够优化它(或者至少JS使迭代更容易)。
两者之间的大小/传输速率差异应该很小,因为数组的方法/属性是在其原型上定义的(类似于Java等经典语言中的超类),因此不会通过网络传输。 / p>
答案 2 :(得分:0)
在JavaScript中哪一个更有效率?
高效的方面是什么?存储器?
哪一个在迭代期间更快?
嗯,你必须以不同的方式迭代对象,所以它不是苹果对苹果。如果你想比较这两个循环:
for (value of option1);
for (key in option2) option[key];
第一个可能会更快,比如说25%。如果以不同的方式循环,对数组使用forEach
,对对象使用Object.keys(option2).forEach
,则差异可能更明显。如果数组稀疏,结果可能会有所不同。确切知道的唯一方法是运行基准测试,结果可能因引擎与发动机或发动机的一个版本而异。
哪一个花在网络上的时间较短?
数组形式较小(字节较少),因此需要较少的时间。然而,假设有效载荷是gzip压缩的,除非你在谈论成千上万的值,否则差异可能微不足道。
如果你的底层数据在语义上是一个数组,为什么不把它当作数组呢?