Javaスクリプト配列メソッド: 例を使用して作成する

⚡ スマートサマリー

Javaスクリプト配列メソッドを使用すると、開発者は単一のオブジェクトを通して、順序付けられた値のコレクションを保存、取得、変換できます。この記事では、配列の作成、インデックスアクセス、組み込みメソッド群、反復処理、多次元構造、および実行可能な例と期待される出力について説明します。

  • 📦 コアコンセプト: 配列とは、1つの名前の下に複数の値を保持し、0から始まるインデックスを通して各値を公開するオブジェクトです。
  • 🛠️ 作成構文: 角括弧を用いたリテラル表記が推奨されますが、既存のコードのために配列コンストラクタも引き続き利用可能です。
  • 変異誘発方法: push、pop、shift、unshift、spliceは元の配列を変更し、削除された値または新しい長さのいずれかを返します。
  • 🔍 非変異法: slice、concat、join、indexOf、および格納されている要素を変更せずに配列を読み取る機能が含まれます。
  • 🔁 反復ファミリー: forEach、map、filter、reduce、findは、すべての要素にコールバックを適用し、関数型プログラミングパターンをサポートします。
  • ⚠️ 並べ替えに関する注意: デフォルトのソートでは値を文字列として比較するため、数値データの場合は明示的な比較関数が必要です。
  • 🧱 入れ子構造: 配列の中に配列を配置すると、2つのインデックス式で参照される多次元グリッドが生成されます。

Javaスクリプト配列メソッド

配列とは何か Javaスクリプト?

配列は、 アイテムの集まり配列は、同じ型の大量のデータを格納する必要がある場合に非常に便利です。たとえば、500人の従業員の詳細を格納したいとします。変数を使用する場合は、500個の変数を作成する必要がありますが、配列を使用すれば同じことができます。配列内の項目には、その配列の要素を参照することでアクセスできます。 インデックス番号、そして配列の最初の要素のインデックスはゼロです。

厳密な型付け言語の配列とは異なり、 Javaスクリプト配列は動的です。新しい要素が追加されると自動的に長さが拡張され、1つの配列に文字列、数値、ブール値、オブジェクト、さらには他の配列を同時に格納できます。この柔軟性により、配列はブラウザスクリプトとサーバーサイドコードの両方でリストデータのデフォルトのコンテナとして使用されています。

配列を作成する方法 Javaスクリプト

で配列を作成できます Javaスクリプト 以下のように。

var students = ["John", "Ann", "Kevin"];

ここでは、配列の作成時に値「John」、「Ann」、「Kevin」を使用して配列を初期化しています。 「ジョン」、「アン」、「ケビン」のインデックスはそれぞれ 0、1、2 です。 Student 配列にさらに要素を追加したい場合は、次のように行うことができます。

students[3] = "Emma";
students[4] = "Rose";

配列コンストラクタを使用して配列を作成することもできます。例:

var students = new Array("John", "Ann", "Kevin");

OR

var students = new Array();

students[0] = "John";

students[1] = "Ann";

students[2] = "Kevin";

配列要素へのアクセスと変更方法

すべての要素は番号付きの位置に配置されます。角括弧表記は、インデックスが現在の長さと等しい場合に、値を読み取り、新しい値を割り当て、または新しいエントリを追加します。

let students = ["John", "Ann", "Kevin"];

console.log(students[0]);              // John  - first element
console.log(students[students.length - 1]); // Kevin - last element

students[1] = "Anna";                // replace an existing value
students[3] = "Emma";                // append a new value

console.log(students);              // ["John", "Anna", "Kevin", "Emma"]
console.log(students.length);       // 4
console.log(students[9]);              // undefined - index does not exist

⚠️ 警告: 現在の長さをはるかに超えるインデックスに値を割り当てると、空のスロットで埋め尽くされた疎な配列が作成されます。 push() インデックスをジャンプさせる代わりに、配列が密で予測可能な状態を維持するようにします。

Javaスクリプト配列メソッド

Array オブジェクトには、開発者が配列を簡単かつ効率的に処理するのに役立つ多くのプロパティとメソッドがあります。 arrayname.property を指定するとプロパティの値を取得でき、arrayname.method() を指定するとメソッドの出力を取得できます。

  1. 長さプロパティ –> 配列内の要素の数を知りたい場合は、length プロパティを使用できます。
  2. プロトタイプのプロパティ –> 新しいプロパティとメソッドを追加する場合は、プロトタイプ プロパティを使用できます。
  3. 逆の方法 –> reverse メソッドを使用して、配列内の項目の順序を逆にすることができます。
  4. ソート方法 → 配列内の項目は、sort メソッドを使用して並べ替えることができます。
  5. ポップメソッド –> Pop メソッドを使用して配列の最後の項目を削除できます。
  6. シフト方式 → 配列の最初の要素は、shift メソッドを使用して削除できます。
  7. プッシュ方式 –> 配列の最後の項目として値を追加できます。

以下の参照表では、最もよく使用されるメソッドをグループ化して示しています。これにより、元の配列を変更するメソッドと新しい値を返すメソッドが一目でわかります。

方法 目的 返品 変更元の配列
押す() 末尾に1つ以上の項目を追加する 新しい長さ はい
ポップ() 最後のアイテムを削除 削除されたアイテム はい
unshift() 前面に1つ以上のアイテムを追加する 新しい長さ はい
シフト() 最初のアイテムを削除する 削除されたアイテム はい
スプライス() 任意の位置に項目を挿入または削除します。 削除されたアイテムの配列 はい
ソート() 商品を注文する ソートされた配列 はい
逆行する () アイテムの順序を反転する 逆配列 はい
スライス() 配列の一部をコピーする 新しい配列 いいえ
concat() 2つ以上の配列を結合する 新しい配列 いいえ
join() アイテムを文字列に結合する String いいえ
の指標() 値の位置を見つける インデックスまたは-1 いいえ
include() 値が存在するかどうかをテストする true または false いいえ

要素の追加と削除

let fruits = ["apple", "banana"];

fruits.push("cherry");      // ["apple", "banana", "cherry"]
fruits.unshift("mango");    // ["mango", "apple", "banana", "cherry"]
fruits.pop();                // ["mango", "apple", "banana"]
fruits.shift();              // ["apple", "banana"]

// splice(startIndex, deleteCount, ...itemsToInsert)
fruits.splice(1, 0, "kiwi"); // ["apple", "kiwi", "banana"]
console.log(fruits);

検索、コピー、結合

let colors = ["red", "green", "blue", "green"];

console.log(colors.indexOf("green"));     // 1  - first match only
console.log(colors.lastIndexOf("green")); // 3
console.log(colors.includes("pink"));     // false
console.log(colors.slice(1, 3));         // ["green", "blue"]
console.log(colors.join(" | "));         // red | green | blue | green
console.log(colors.concat(["black"]));   // new array, colors unchanged

反復処理方法:forEach、map、filter、reduce

モダン Javaスクリプトは、操作の意図がメソッド名に直接示されているため、手動のインデックスループよりもコールバック駆動型のメソッドを優先します。

const scores = [45, 72, 88, 31, 95];

scores.forEach(s => console.log(s));   // prints each score

const doubled = scores.map(s => s * 2);  // [90, 144, 176, 62, 190]
const passed  = scores.filter(s => s >= 50); // [72, 88, 95]
const total   = scores.reduce((sum, s) => sum + s, 0); // 331
const first   = scores.find(s => s > 80);   // 88

console.log(doubled, passed, total, first);

💡ヒント: デフォルト sort() 要素を文字列に変換するので [10, 9, 100].sort() 収益 [10, 100, 9]比較器を渡す例: sort((a, b) => a - b) 数字を正しく並べ替える。

Javaスクリプト配列の例(ソース付き) Code

以下のスクリプトは、学生の配列を作成し、プロトタイププロパティを介してカスタム表示メソッドを追加した後、長さ、ソート、反転、ポップ、プッシュを順に実行します。ぜひご自身でお試しください。

<html>
<head>
	<title>Arrays!!!</title>
	<script type="text/javascript">
		var students = new Array("John", "Ann", "Aaron", "Edwin", "Elizabeth");
		Array.prototype.displayItems=function(){
			for (i=0;i<this.length;i++){
				document.write(this[i] + "<br />");
			}
		}
		document.write("students array<br />");
		students.displayItems();
		document.write("<br />The number of items in students array is " + students.length + "<br />");
		document.write("<br />The SORTED students array<br />");
		students.sort();
		students.displayItems();
		document.write("<br />The REVERSED students array<br />");
		students.reverse();
		students.displayItems();
		document.write("<br />THE students array after REMOVING the LAST item<br />");
		students.pop();
		students.displayItems();
        document.write("<br />THE students array after PUSH<br />");
        students.push("New Stuff");
		students.displayItems();
	</script>
</head>
<body>
</body>
</html>

期待される出力:

students array
John
Ann
Aaron
Edwin
Elizabeth

The number of items in students array is 5

The SORTED students array
Aaron
Ann
Edwin
Elizabeth
John

The REVERSED students array
John
Elizabeth
Edwin
Ann
Aaron

THE students array after REMOVING the LAST item
John
Elizabeth
Edwin
Ann

THE students array after PUSH
John
Elizabeth
Edwin
Ann
New Stuff

ソート操作では、大文字と小文字が文字コードで比較されるため、「Aaron」が「Ann」より前に配置されることに注目してください。また、ポップ操作では、反転された配列から「Aaron」が削除されていることにも注目してください。これは、ソート操作と反転操作の両方が元の配列をその場で変更したことを示しています。

ループする方法 Javaスクリプト配列

4つのトイレping 様々なスタイルが用意されており、それぞれ異なる状況に適しています。古典的な for ループはインデックスを完全に制御でき、for…of は値を直接読み取り、forEach は意図を明確に表現し、for…in はオブジェクトのプロパティのために予約しておくべきです。

const cities = ["Paris", "Tokyo", "Cairo"];

// 1. Classic for loop - index is available
for (let i = 0; i < cities.length; i++) {
    console.log(i + ": " + cities[i]);
}

// 2. for...of loop - value is available
for (const city of cities) {
    console.log(city);
}

// 3. forEach with index parameter
cities.forEach((city, index) => console.log(index, city));

// 4. entries() when both index and value are needed
for (const [index, city] of cities.entries()) {
    console.log(index, city);
}

while や do…while を含むループ構文のより詳細な解説は、次の記事に掲載されています。 ループの使い方 Javaスクリプト.

多次元配列 Javaスクリプト

JavaScriptには専用の行列型はありません。グリッドは単に配列であり、その要素自体が配列です。単一のセルにアクセスするには、2つのインデックス式を使用します。

const matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

console.log(matrix[1][2]); // 6  - row index 1, column index 2

for (const row of matrix) {
    console.log(row.join(" "));
}

// flatten a nested array into a single level
console.log(matrix.flat()); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

出力:

6
1 2 3
4 5 6
7 8 9
[1, 2, 3, 4, 5, 6, 7, 8, 9]

配列は、フォーム検証からデータレンダリングまで、ほとんどすべての実用的なスクリプトに登場します。 実用的 Javaスクリプトコードの例、 レビュー Javaスクリプト文字列 テキスト処理については、以下をお読みください。 内部と外部 Javaスクリプト これらのスクリプトがページ内のどこに属するかを決定する。配列の内容に対して静的な型チェックを行いたい開発者は、 TypeScript チュートリアル.

よくあるご質問

配列は数値インデックスで指定される順序付きリストを格納しますが、オブジェクトは名前付きプロパティを格納しますが、順序は保証されません。配列は、通常のオブジェクトにはないプッシュやマップなどのリストメソッドを継承します。

配列の場合にのみtrueを返すArray.isArray(value)を使用してください。typeof演算子は、配列、日付、nullのいずれに対しても「object」と報告するため、ここでは信頼できません。

スプレッド構文 […original] または original.slice() を使用してください。通常の代入では参照のみがコピーされるため、どちらの変数を使用しても、同じ基となる配列に影響します。

indexOfを使って位置を見つけ、それをspliceに渡します。例えば、arr.splice(arr.indexOf(“Ann”), 1)のように記述します。あるいは、filter関数を使うと、不要な値を除外した新しい配列が返されます。

配列は、ブラウザ内でチャットメッセージの履歴、埋め込みベクトル、およびストリーミングされたモデルトークンを保持します。mapやreduceなどのメソッドは、これらのコレクションをAPIに送信したりレンダリングしたりする前に、その形状を変更します。

はい、通常はそうなります。ただし、提案された方法が元の配列を変更するかどうかを確認してください。予期しないスプライスやソートによって、React または Vue コンポーネントの状態が破損する可能性があるためです。