浅谈javascript数组的使用

浅谈javascript数组的使用
最后一篇文章说数组的索引,它表示数组的使用。

数组的大小

JS数组可以动态调整大小,更确切一点,它没有阵列跨越边界的概念,a.length }和{有什么用它做。例如,对= { 1, 3, 5 } 3数组的声明,现在是该数组的大小,该最后一个元素是2,但你仍然可以使用{ 3 }访问一个{ 3 }返回未定义,分配到{ 3 }:一{ 3 } = 7,是添加一个元素的数组,数组的长度现在是4。你可以试着把下面的代码在浏览器中运行:
var = { };
为(int i = 0;i < a.length;i++)
{
一个{ } =我a.length;
}
在我的电脑上,Firefox会脱落,Chrome标签CPU占用99%(使用Chrome任务管理器查看)。

js的长度值会随着数组元素的变化而变化,可以手动设置数组的长度属性,较大的长度不会给数组分配更多的空间,但设置较小的长度将导致大于所有属性等于新长度的下标被删除。

另一点是数组的长度值是如何到来的。一些数据是最大数量的索引值加上一个。它应该是正确的,但是如果空槽被计数,长度值是数组的元素数:
在图中你可以看到,有一个A,{ 0 }和一个{ 10 }的数组被分配为长度为11, 9的空槽(暂定翻译成空槽)。所以这九个空槽不计数,我认为应该计算,这样长度值可以合理地解释。这些空槽的值是多少未定义!所以,如果你使用foreach遍历(因为)在Chrome中,这些空槽可以跳过,并遍历打印出定义。作为Firefox的性能是不一样的,自己试试。

数组的遍历

昨天当我看微博js教程,据说当遍历数组,它是判断句我< a.length会造成每个周期来计算一次,因此它对性能的影响很小。我怀疑,我不知道是不是,和不同的浏览器可能会在这种情况下,有不同的优化,我在网上找到的,说找几个缓存数组的大小,但它是抄的,不张扬,不讲原则,所以我说我怀疑,并测试了Chrome之间的性能差异不显著。关键是我认为的长度是数组属性。当调用a.length,它只访问该属性。属性以哈希模式存储,所以访问的时间复杂度是O(1)。

关于数组的foreach遍历方式JS是相对于如java或C #很奇怪的语言:
为(变量名在{ Huey,'dewey ','louie ' }){
console.log(名称);
}
*
打印结果:



* /
可以看出,打印的结果不是数组元素,而是数字索引值。它还表明,JS数组也是以哈希方式存储的。无论如何,我们应该注意这个(至于为什么,我认为数组元素是数组属性,遍历是遍历长度值,从0到长度,而不是一个接一个地输出数组元素,因为元素是属性,数组不仅仅是数字索引的。为什么它们只有在被遍历时才导出,而不是长度、推、连接等等公平地说,我们必须输出数组的数字索引。当然,这只是我自己的观点,我没有研究它。

数组的一些方法

数组的push和pop方法,所以阵列是一个堆栈,阵列使用删除,可以是一个数组中的元素被删除,但它会留下一个洞在阵列(即删除可以删除数组中的元素,但只要删除位置值,不改变阵列,位置的原始类型是未定义的大小),这是因为它是在保持原有性能的元素被删除,那么你应该使用拼接操作删除阵列薄膜,它将移除属性被删除,但效率不是很高,也有地图,减少,过滤器,等在数组中,并没有多少说这里(如列表Python)。

补充

最后,我想补充的是,正如我之前提到的,在JS数组对象(废话,本来一个对象),那么这是否意味着数组和对象可以彼此互换吗答案是肯定的,但是为了清楚,最好分开使用。让我们来讨论何时使用数组和何时使用对象(请参阅Javascript语言的本质)。

当属性名是一个小且连续的整数时,应该使用一个数组;否则,使用该对象。

此外,由于使用数组和对象类型的JS结果都是对象,所以判断一个对象是一个数组的方法:

无功is_array =函数(值){
返回object.prototype.tostring.apply(价值)={ }对象数组;
};
番外

我想关闭是神化,也许有技术在语言层面上,但在应用层面,我觉得应该是这样的。当你使用它时,你不能感觉到它是使用闭包的,但是这个壁橱几乎是面试的前端。

以上是本文的全部内容,希望大家能喜欢。

tag:数组浅谈电脑软件Javascript

相关内容