数组是编程语言中广泛使用的下划线;它们是特殊的变量,可用于在同一时间内存储混合值。然而,当涉及到JavaScript时,尽管它很容易学习,但总有一些--更多的东西需要探索。
在这篇文章中,我们将概述JavaScript数组的明显但关键的功能,我们的能力以前没有著名的。
如果我们在互联网上搜索一个JavaScript数组的完美澄清,我们会发现,几乎所有的源码(尽管destroy)都会将数组作为一个对象列出。
我们在JavaScript中所理解的大致都是一个对象。在JavaScript中有两种信息形式:原语和对象,尽管原语总是被包装在对象中。
数组,函数,日期等都是预定义的JavaScript对象,它们具有内置的方法,属性,并且具有标准化的语法。
JavaScript数组可以有三种相互冲突的属性形式:
最初的双技能是比较有名的,我们随时都可以使用他们,不过在开始讨论如何将你的传统技能补充到一个阵法之前,让我们先看看他们。
作为属性的索引
JavaScript数组使用方形联合语法,例如var ary=[“orange”,“apple”,“lychee”];。
数组元素的索引是基本属性,其中属性名总是非负整数。
数组的索引-元素对与对象的键-值对相同。
索引是数组对象的一个单数下划线,以及图形其他内置属性,它们可以单独使用括号语法来设置,例如ary[3]=“peach”;
数组也有内置属性,如Array.Length。长度技能携带一个整数值,表示数组的长度。
通常,内置属性可以经常在预定义的JavaScript对象(如数组)中找到。与内置方法一起,它们帮助定制一般对象,使对象适合冲突的需求。
可以使用object.key或object[“key”]语法访问内置属性。所以我们也可以写ary[“length”]来输入数组的长度。
现在,让我们宣布如何向数组中添加you占有属性。数组是预定义对象,在索引冲突期间存储值的冲突形式。
通常不需要对数组补充传统属性;这也是初学者通常不了解这个特性的原因之一。如果我们希望通过向数组中添加键-值对来提供一个类似于普通意图的数组,我们可以很好地使用普通意图来实现您的目的。但是,这并不意味着在特殊情况下,我们可以通过向数组添加一个或多个传统属性来利用数组是对象这一事实。
例如,我们可以将一个传统技能补充到标识元素的“种类”或“类”的数组中,就像我们可以在下面的一个实例中看到的那样。
xxxxxxxxxx
var ary = ["orange","apple","lychee"];
ary.itemClass = "fruits";
console.log(ary + " are " + ary.itemClass);
// "orange,apple,lychee are fruits"
注意,我们补充到数组中的一个传统技能是可枚举的,这意味着它将被循环(如for…in语句)选择为成人。
你实质上主张“我已经知道了”,那是许多人所期望的事实,我们确实已经知道如何通过数组元素。但是,观察“按数组元素循环”确实有点抽象,因为我们实际上循环的是数组的索引。
由于数组索引通常由非负整数完成,因此我们在数组的整个长度期间迭代一个整数值,通常从0开始,直到最后,然后在给定索引期间使用该迭代值进入数组组件。
然而,在ECMAScript6中,有一种方法可以直接按数组值循环,尽管会使用索引,并且可以通过调整for…of循环来完成。
“物质的for…创建一个循环,在可迭代对象上迭代(包括数组,映射,集合,字符串,TypedArray,参数意图等等),调用一个传统迭代分支,该分支带有要为任何图形属性的值执行的语句。-MDN“
在数组中,for.。。of循环将按索引序列中的数组元素进行循环,另一个不同之处在于,它将处理在给定索引期间迭代索引和移除现有数组值的问题。如果我们通常希望对所有元素数组进行循环并与它们一起工作,那么这个循环是理想的。
xxxxxxxxxx
var ary = ["orange","apple","lychee"];
for (let object of ary){
console.log(item);
}
// "orange", "apple", "lychee"
为了进行比较,使用一个不变的For循环,我们得到索引而不是值作为输出。
xxxxxxxxxx
var ary = ["orange","apple","lychee"];
for (var object = 0; object ary.length; item++){
console.log(item);
}
// 0, 1, 2
通常,当我们宣布数组的长度时,我们认为它可能是数组持有的一系列值,或者是我们手动赋予数组的长度。然而,在现实中,数组的长度取决于其内部存在的最大索引。
长度是一个非常可拉伸的属性。无论之前是否已经绑定了数组的长度,如果我们不断地向数组中添加值,长度就会相应地不断增加。
xxxxxxxxxx
var ary = [];
ary.length = 3;
console.log(ary.length);
// 3
ary[5] = "abcd";
console.log(ary.length);
// 6
在上面的一个实例中,我们可以看到,我们给了一个数组在索引5期间通常是一个值,一个长度变成了6。现在,如果我们认为,通过在索引5中添加值,一个数组自动组合了0到4的索引,那么之后你的傲慢就不正确了。在该数组中没有从0到4的索引。您可以检查此调节in运算符。
xxxxxxxxxx
var ary = [];
ary.length = 3;
console.log(ary.length);
// 3
ary[5] = "abcd";
console.log(ary.length);
// 6
console.log(0 in ary);
// false
数组ary就是我们所说的“稀疏”数组,一个索引不连续组合并且有间隙的数组。“稀疏”数组的冲突是“密集”数组,其中索引始终存在于数组中,并且一系列元素的长度相同。
长度技能也能够截断数组,创建一定的顶部索引在数组中的好处总是小于它自己,因为长度在数字上总是大于顶部索引默认情况下。
在下面的一个实例中,我们可以看到如何在索引5期间通过减小一个ary数组的长度来移除一个组件。
xxxxxxxxxx
var ary = [];
ary.length = 3;
console.log(ary.length);
// 3
ary[5] = "abcd";
console.log(ary.length);
// 6
ary.length = 2;
console.log(ary.length);
// 2
console.log(ary[5]);
// undefined