JavaScript 配列について知らなかった 3 つのこと
プログラミング言語では、配列 (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)!

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。
