ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 配列について知らなかった 3 つのこと

JavaScript 配列について知らなかった 3 つのこと

黄舟
黄舟オリジナル
2017-02-23 13:27:46984ブラウズ

プログラミング言語では、配列 (Array) は非常に一般的に使用される関数であり、複数の値を同時に格納するために使用できる特別な変数です。ただし、JavaScript に関して言えば、配列の能力について検討すべきことはまだたくさんあります。

この記事では、JavaScript 配列のあまり一般的ではない 3 つの関数について説明します。

1. カスタム属性を配列に追加します

インターネットで JavaScript 配列の定義を検索すると、ほとんどの人が同じ配列 (オブジェクト) を定義していることがわかります。

実際、JavaScript で処理するものはすべてオブジェクトとみなすことができます。 JavaScriptには基本型とオブジェクト型の2つのデータ型がありますが、基本型は基本的にオブジェクト型に含まれます。

配列、関数、日付はすべて JavaScript で事前定義されたオブジェクトであり、それらにはすべてメソッド、プロパティ、および独自の標準化された構文が含まれています。

JavaScript 配列には次の 3 つの異なるプロパティがあります:

1 配列のインデックスもそのプロパティです

2 組み込みプロパティ

3 カスタム プロパティを自分で追加できます

最初の 2 つのプロパティはよく知られています皆さん、これは毎日使用されているかもしれませんが、ここで簡単にいくつかの言葉を述べてから、カスタム プロパティを配列に追加する方法について説明したいと思います。

属性としてのインデックス

JavaScript 配列では、var ary = ["orange","apple","lychee"]; などの角かっこ構文を使用できます。

配列要素のインデックスは基本的に属性であり、その属性の名前は常に負ではない整数です。

配列のインデックス要素のペアは、オブジェクトのキーと値のペアに似ています。インデックスは配列オブジェクトの一意のプロパティであり、他の組み込みプロパティとは異なり、ary[3] = "peach"; のように角括弧を使用して個別に構成できます。

組み込みプロパティ

配列には、array.length などの組み込みプロパティがあります。 length 属性には、配列の長さを表す整数値が含まれます。

一般に、組み込みプロパティは、配列などの事前定義された JavaScript オブジェクトに含まれることがよくあります。組み込みプロパティと組み込みメソッドを組み合わせて、さまざまなニーズに合わせて通常のオブジェクトをカスタマイズします。

組み込みプロパティにアクセスするときは、object.key または object["key"] の 2 つの構文を使用できます。つまり、配列の長さを取得する場合は、ary["length"] と書くことができます。

配列オブジェクトのカスタム プロパティを作成する

次に、カスタム プロパティを配列に追加する方法について説明します。配列は、さまざまな種類の値をさまざまなインデックスに格納する事前定義されたオブジェクトです。

通常、配列にカスタム属性を追加する必要はありません。このため、私たちが初めて JavaScript を学んだとき、配列に属性を追加できるとは誰も教えてくれませんでした。実際、通常のオブジェクトと同じ方法でキーと値のペアを配列に追加したい場合は、その目的のために通常のオブジェクトを使用することもできます。ただし、特別なケースがまったくないというわけではありません。場合によっては、配列がオブジェクトであるという事実を利用して、それに 1 つ以上のカスタム プロパティを追加できます。

たとえば、要素の「種類」または「クラス」を識別できるカスタム属性を配列に追加できます。詳細については、以下の例を参照してください:

 var ary = ["orange","apple","lychee"];

ary.itemClass = "fruits";

console.log(ary + " are " + ary.itemClass);

配列に追加するカスタム属性はすべて数えられるものであることに注意してください。つまり、for...in およびその他のループによって選択できます。

2. 配列要素のループ

「これはすでに知っています。」そう、配列要素にインデックスを付ける方法はすでに知っています。しかし、実際にループするのは配列のインデックスであるため、「配列要素をループする」というステートメントは少し抽象的だと感じるかもしれません。

配列インデックスはすべて非負の整数で構成されているため、通常は 0 から配列の全長まで開始し、整数値を反復し、反復された値を使用して、特定のインデックスに従って整数値を計算します。配列要素を取得します。

しかし、ECMAScript6 の出現以来、インデックスを気にする必要がなくなり、配列値を直接ループすることができ、この操作は for...of ループを使用して完了できます。

配列では、for...of ループはインデックスの順序に従って配列要素をループできます。つまり、インデックスの反復を制御し、指定されたインデックスに従って既存の配列値を取得できます。 。このループは、すべての配列要素をループして使用したい場合に便利です。

 var ary = ["orange","apple","lychee"];

for (let item of ary){

  console.log(item);

}

For comparison, with the regular for loop, we get the indices instead of the values as output.

 

var ary = ["orange","apple","lychee"];

for (var item = 0; item < ary.length; item++){

  console.log(item);

}

3. 要素の数はその長さと等しくない

一般に、配列の長さについて話すとき、その長さは配列値の数であるか、配列に対して手動で設定されるかのどちらかであると考えられます。長さ。しかし実際には、配列の長さは配列内の既存のインデックスの最大値によって決まります。

长度是一个非常灵活的属性。无论你是否曾实现调整了数组的长度,只要你不断的给数组添加新的值,它的长度也会随之增长。

 var ary = [];

ary.length = 3;

console.log(ary.length);

ary[5] = "abcd";

console.log(ary.length);

在上面的例子中,你可以看到我给数组的索引5只指定了一个值,之后长度变成了6。现在,如果你觉得给index 5添加一个值,数组就会自动创建索引0-4,那么你的推测就出现了错误。数组中并没有应经存在的索引0-4。你可以使用in operator来查看。

 var ary = [];

ary.length = 3;

console.log(ary.length);

ary[5] = "abcd";

console.log(ary.length);

console.log(0 in ary);

上面的ary数组被我们成为稀疏数组(sparse array),这个数组的索引不会持续的被创建,而且索引之间有空气。sparse数组的对立面为密集数组(dense array)。密集数组的索引会被持续的创建,其元素的数量等于其长度。

数组的长度属性也可以用来缩短数字,确保数组中索引的最大数量永远小于数组本身,因为在默认情况下,长度的数值永远会大于索引数量的最高值。

在下面的例子中,你可以看到,我利用减少ary数组长度的方式,社区了索引5中的元素。

var ary = [];

ary.length = 3;

console.log(ary.length);

ary[5] = "abcd";

console.log(ary.length);

ary.length = 2;

console.log(ary.length);

console.log(ary[5]);

 以上就是关于JavaScript数组,你所不知道的3件事的内容,更多相关内容请关注PHP中文网(www.php.cn)! 



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。