javascript - 在 Javascript 中预定义数组长度

标签 javascript arrays optimization

将项目插入数组时,预定义 Javascript 数组的长度是否会提高性能?

例如,假设您正在这样做:

var item1 = "apple",
    item2 = "orange",
    item3 = "sports car"; // Because I said so, that's why.

var myArray = [];  // Empty array with initial length of 0

myArray.push(item1);
console.log(myArray.length) // 1

myArray.push(item2);
console.log(myArray.length) // 2

myArray.push(item3);
console.log(myArray.length) // 3

在上面的代码中,每次推送时都会重新计算 myArray 的长度。或者;

var item1 = "apple",
item2 = "orange",
item3 = "sports car";

var myArray = Array(3) // Assume we already know exactly how many items will be added
myArray[0] = item1;
console.log(myArray.length) // 3

myArray[1] = item2;
console.log(myArray.length) // 3

myArray[2] = item3;
console.log(myArray.length) // 3

我的问题是,当您显式地将值分配给数组中预先存在的槽时,该数组的长度属性仍会重新计算。如果不是,回避该过程是否会产生更快的阵列填充?

不用说,这更像是一个理论练习,而不是实际的现实问题。

最佳答案

根据 this JSPerf , 预定义长度 快了很多。

需要注意的是,new Array() 语法并不是最佳实践。如果您绝对需要发挥最后一点性能,请考虑这一点。否则,使用 [] 让您和所有接触您代码的开发人员的生活变得轻松。

关于javascript - 在 Javascript 中预定义数组长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18008379/

相关文章:

javascript - 如何从多阵列中删除文件详细信息

c++ - C++ 中带有 malloc 的字符串数组

c - GCC 预处理器将优化什么?

c++ - 仅在发布中存在错误

c - 有效地将无符号转换为有符号

javascript - 如何知道电子邮件是否已经在firebase身份验证中注册,javascript?

javascript - 具有可点击的父 div 和可点击的子 div

arrays - Ajax DATA 更​​改排序

javascript - 我在网上找到的这个函数的时间复杂度是O(n)吗?

javascript - JS 过早验证条码扫描仪数据