ホームページ  >  記事  >  ウェブフロントエンド  >  配列を再構築する

配列を再構築する

PHPz
PHPzオリジナル
2023-09-03 08:37:11667ブラウズ

配列を再構築する

配列は、順序付けられた値のリストであり、通常はインデックス 0 から始まる数値インデックス付きの値をループするために作成されます。知っておく必要があるのは、配列は番号順のコレクションであり、番号順ではない値に関連付けられたプロパティ名を持つオブジェクトではないということです。基本的に、配列は検索キーとして数値を使用しますが、オブジェクトにはユーザー定義のプロパティ名があります。 JavaScript には真の連想配列はありませんが、オブジェクトを使用して連想配列の機能を実装できます。

以下の例では、4 つの文字列を myArray に保存し、数値インデックスを使用してそれらにアクセスできます。 myArray を、連想配列を模倣したオブジェクト リテラルと比較対照します。

例:sample133.html

リーリー

配列は任意の型の値を保持でき、これらの値はいつでも更新または削除できます。

ハッシュ (連想配列とも呼ばれます) が必要な場合、オブジェクトが最も近い解決策です。

Array() は、Object() の特別なタイプにすぎません。つまり、Array() インスタンスは基本的に Object() インスタンスに、いくつかの追加関数 (.length と組み込みの数値インデックス) を追加したものです。

配列に含まれる値は、多くの場合要素と呼ばれます。


Array() パラメータ

配列インスタンスの値をコンマ区切りの引数としてコンストラクターに渡すことができます (new Array('foo', 'bar');)。 Array() コンストラクターは最大 4,294,967,295 個のパラメーターを受け取ることができます。

ただし、引数が 1 つだけ Array() コンストラクターに送信され、その値が整数 ('1'、'123'、または '1.0') の場合は、その引数が使用されます。 配列の長さを設定します。配列に含まれる値としては使用されません。

例:sample134.html

リーリー

Array() プロパティとメソッド

Array() オブジェクトには次のプロパティがあります (継承されたプロパティとメソッドを除く)。

プロパティ (

Array.prototype):

######プロトタイプ######
  • 配列オブジェクト インスタンスのプロパティとメソッド
  • Array オブジェクト インスタンスには、次のプロパティとメソッドがあります (継承されたプロパティとメソッドを除く):

インスタンス プロパティ (

var myArray = ['foo', 'bar']; myArray.length;

):

######コンストラクタ###### ######長さ######

インスタンス メソッド (var myArray = ['foo']; myArray.pop();

):
  • ######ポップ()###### ######押す()###### ######逆行する()###### ######シフト()###### ######選別()###### ######スプライス()###### シフト解除()
  • concat()
######参加する()###### ######スライス()######

配列の作成

    JavaScript のほとんどのオブジェクトと同様、配列オブジェクトは、
  • new 演算子と Array()
  • コンストラクターを組み合わせて使用​​するか、リテラル構文を使用して作成できます。
  • 次の例では、Array()
  • コンストラクターを使用して、事前定義された値を持つ
  • myArray1 の配列を作成し、リテラル表記を使用して myArray2## を作成します。 #。
  • 例:sample135.html リーリー リテラル構文を使用して配列を定義する方が一般的ですが、このショートカットは
  • Array()
  • コンストラクターの使用を非表示にするだけであることに注意してください。 実際には、通常は配列リテラルだけで十分です。
  • 配列がどのように定義されているかに関係なく、配列に事前定義された値を指定しない場合、配列は作成されますが、値は含まれません。
  • 配列内の値を追加および更新する
  • 値はいつでも、任意のインデックスで配列に追加できます。次の例では、空の配列の数値インデックス 50 に値を追加します。 50 より前のすべての指数はどうなるでしょうか?先ほども述べたように、いつでもどのインデックスでも配列に値を追加できます。ただし、空の配列の数値インデックス 50 に値を追加すると、JavaScript はその前に必要なすべてのインデックスを 未定義
  • 値で埋めます。
  • 例:sample136.html リーリー
  • さらに、JavaScript の動的な性質と JavaScript が厳密に型指定されていないという事実を考慮すると、配列値はいつでも更新でき、インデックスに含まれる値は任意の正当な値にすることができます。以下の例では、数値インデックス 50 の値をオブジェクトに変更します。
  • 例:sample137.html リーリー
  • 長さとインデックス 配列のインデックス値は 0 から始まります。これは、値を保持する配列内の最初の数値スロットが
  • myArray[0]
のように見えることを意味します。これは少し混乱する可能性があります。単一の値を含む配列を作成すると、値のインデックスは 0、配列の長さは 1 になります。配列の長さは配列に含まれる値の数を表し、配列の数値インデックスは 0 から始まることを必ず理解してください。

次の例では、文字列値

blue

myArray 配列の数値インデックス 0 に含まれていますが、配列には値が含まれているため、配列の長さは 1 です。 。 例:sample138.html

<!DOCTYPE html><html lang="en"><body><script>

	var myArray = ['blue'] // The index 0 contains the string value 'blue'.
	console.log(myArray[0]); // Logs 'blue'.
	console.log(myArray.length); // Logs 1.

</script></body></html>

使用预定义的 length 定义数组

正如我之前提到的,通过将单个整数参数传递给 Array() 构造函数,可以预定义数组长度或其将包含的值的数量。在这种情况下,构造函数会抛出一个异常,并假设您要设置数组的长度,而不是用值预先填充数组。

在下一个示例中,我们设置了预定义长度为 3 的 myArray 数组。同样,我们配置数组的长度,而不是向其传递要存储在 0 索引处的值。

示例:sample139.html

<!DOCTYPE html><html lang="en"><body><script>

	var myArray = new Array(3);
	console.log(myArray.length); // Logs 3 because we are passing one numeric parameter.
	console.log(myArray[0]); // Logs undefined.

</script></body></html>

提供预定义的 length 将为每个数字索引(最多指定的长度)提供 undefined 的关联值。

您可能想知道是否可以创建一个仅包含一个数值的预定义数组。是的,它是通过使用文字形式 var myArray = [4].


设置数组长度可以添加或删除值

数组对象的 length 属性可用于获取或设置数组的长度。如前所示,设置长度大于数组中包含的实际值数会将 undefined 值添加到数组中。您可能没想到的是,您实际上可以通过将长度值设置为小于数组中包含的值的数量来从数组中删除值。

示例:sample140.html

<!DOCTYPE html><html lang="en"><body><script>

	var myArray = ['blue', 'green', 'orange', 'red'];
	console.log(myArray.length); // Logs 4.
	myArray.length = 99;
	console.log(myArray.length); // Logs 99, remember we set the length, not an index.
	myArray.length = 1; // Removed all but one value, so index [1] is gone!
	console.log(myArray[1]); // Logs undefined.

	console.log(myArray); // Logs '["blue"]'.

</script></body></html>

包含其他数组的数组(又名多维数组)

由于数组可以保存任何有效的 JavaScript 值,因此数组可以包含其他数组。完成此操作后,包含封装数组的数组将被视为多维数组。访问封装的数组是通过括号链接完成的。在下面的示例中,我们创建一个包含一个数组的数组文字,在其中创建另一个数组文字,在其中创建另一个数组文字,其中包含索引 0 处的字符串值。

示例:sample141.html

<!DOCTYPE html><html lang="en"><body><script>

	var myArray = [[[['4th dimension']]]];
	console.log(myArray[0][0][0][0]); // Logs '4th dimension'.

</script></body></html>

这个代码示例相当愚蠢,但您会明白数组可以包含其他数组,并且您可以无限期地访问封装的数组。


前后循环数组

循环数组的最简单且可以说是最快的方法是使用 while 循环。

在下面的代码中,我们从索引的开头循环到结尾。

示例:sample142.html

<!DOCTYPE html><html lang="en"><body><script>

	var myArray = ['blue', 'green', 'orange', 'red'];

	var myArrayLength = myArray.length; // Cache array length to avoid unnecessary lookup.
	var counter = 0; // Set up counter.

	while (counter < myArrayLength) { // Run if counter is less than array length.
		console.log(myArray[counter]); // Logs 'blue', 'green', 'orange', 'red'.
		counter++; // Add 1 to the counter.
	}

</script></body></html>

现在我们从索引末尾循环到开头。

示例:sample143.html

<!DOCTYPE html><html lang="en"><body><script>

	var myArray = ['blue', 'green', 'orange', 'red'];

	var myArrayLength = myArray.length;
	while (myArrayLength--) {                // If length is not zero, loop and subtract 1.
		console.log(myArray[myArrayLength]);  // Logs 'red', 'orange', 'green', 'blue'.
	}

</script></body></html>

结论

现在,如果您想知道为什么我没有在这里显示 for 循环,那是因为 while 循环的移动部分较少,而且我相信它们更容易阅读。

关于数组的这篇文章就这样结束了。

以上が配列を再構築するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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