配列
配列は、たくさんの値を順番どおりに一つの名前で保存します。["red", "green", "blue"] では、"red" はインデックス 0 にあり、長さは 3 です。
一つの変数に入れるリスト
クラス全員の得点を記録するプログラムを考えてみましょう。score1、score2、score3 という名前の変数が三十個もあったら扱うのが大変で、ループで回すこともできません。配列は、ほかの値を順番に並べたリストを入れておける一つの値です。角かっことコンマで書きます。
const fruits = ["apple", "banana", "cherry"];
console.log(fruits.length); // 3
console.log(fruits[0]); // apple
console.log(fruits[2]); // cherry配列の中のそれぞれの値を要素と呼びます。要素には、文字列の文字とまったく同じように、0 から始まるインデックスで番号がついています。ですから最初の要素は fruits[0]、最後の要素は fruits[fruits.length - 1] です。fruits[10] のように存在しないインデックスを求めてもエラーにはならず、undefined が返ります。配列にはどんな種類の値でも入れられ、要素の型がそろっている必要もありません。ただし実際には、そろっていることがほとんどです。
配列を変える
文字列とちがって、配列はその場で変えられます。インデックスに代入すると要素を置きかえられます。fruits[1] = "blueberry" です。メソッド push は末尾に要素を加え、pop は最後の要素を取り除いて返します。unshift と shift は、同じことを先頭で行います。これは配列を const で宣言していても使えます。const が止めるのは、その名前が別の配列を指すことだけで、中身を固めるわけではありません。
const list = ["milk", "eggs"];
list.push("bread");
console.log(list.length); // 3
const last = list.pop();
console.log(last); // bread
console.log(list.join(", ")); // milk, eggs問いに答えるメソッドもあと二つあります。includes(x) は x が配列にあれば true を返し、indexOf(x) はそのインデックスを返します。なければ -1 です。join(", ") はすべての要素を、指定した区切りをあいだにはさんで一つの文字列にまとめます。リストをきれいに表示するいちばん簡単な方法です。
配列をループで回す
配列とループは相性がぴったりです。インデックスを 0 から長さの手前まで進める for ループなら、すべての要素をたどれます。位置はいらず値だけが必要なら、for...of ループのほうが短く書けます。
const scores = [70, 85, 90, 55];
for (let i = 0; i < scores.length; i++) {
console.log(i, scores[i]);
}
let total = 0;
for (const s of scores) {
total += s;
}
console.log(total / scores.length); // 75条件 i < scores.length では、<= ではなく < を使っていることに注目しましょう。要素が四つならインデックスは 0 から 3 までで、<= を使うと末尾の一つ先まで読んでしまいます。この「一つずれ」のまちがいは、プログラミング全体の中でもとくによくあるバグです。
二つの名前、一つの配列
数や文字列は、別の変数に代入するとコピーされますが、配列はコピーされません。const a = [1, 2]; const b = a; のあと、二つの名前はまったく同じ配列を指しています。ですから b.push(3) をすると、a から見えるものも変わり、a.length は 3 になります。別のコピーが必要なら const b = [...a]; と書きます。これは a の要素を新しい配列に展開します。次の単元で学ぶオブジェクトも同じようにふるまいます。
例題。Math.max を使わずに、[4, 17, 9, 12] の中でいちばん大きい数を見つけましょう。let best = nums[0] から始めて残りをループで回し、要素が best より大きければ、それを best に入れます。ループのあと、best は 17 になります。「今までで最もよいもの」を覚えておく変数という同じ形で、いちばん長い語、いちばん安い値段、いちばん早い日付も見つけられます。
| 配列 | [ ] に入れた、順番のある値のリスト |
| 要素 | 配列の中の一つの値 |
| arr[0] | 最初の要素 |
| arr[arr.length - 1] | 最後の要素 |
| push / pop | 末尾に加える / 末尾から取り除く |
| includes | 値が配列にあれば true |
| join | 要素をつなげて一つの文字列にする |
| for...of | 配列の値をループで回す |
| 一つずれ | 一つ先まで行きすぎたり手前で止まったりすること。< のかわりに <= を使ったときによく起こる |
- 何が表示されますか?
const a = [10, 20, 30]; console.log(a[1]); - 何が表示されますか?
const a = [10, 20, 30]; console.log(a.length); - 何が表示されますか?
const a = ["x", "y", "z"]; console.log(a[a.length - 1]); - 何が表示されますか?
const a = [1, 2]; a.push(3); a.push(4); console.log(a.length); - 何が表示されますか?
const a = [5, 6, 7]; const x = a.pop(); console.log(x, a.length);- 7 2
- 5 2
- 7 3
- 何が表示されますか?
const a = ["cat", "dog"]; console.log(a.indexOf("bird")); - 何が表示されますか?
const a = ["a", "b", "c"]; console.log(a.join("-")); - 何が表示されますか?
const a = [3, 4, 5]; let t = 0; for (const n of a) { t += n; } console.log(t); - 何が表示されますか?
const a = [1, 2, 3]; a[0] = 9; console.log(a[0] + a[2]); - 何が表示されますか?
const a = ["red", "green"]; console.log(typeof a[5]);- undefined
- エラーになる
- string
- arr のすべてのインデックスをちょうど一回ずつたどるループの見出しはどれですか?
for (let i = 0; i < arr.length; i++)for (let i = 0; i <= arr.length; i++)for (let i = 1; i <= arr.length; i++)
- 配列は [ ] に順番どおりに値を入れる。インデックスは 0 から始まる。
- 最後の要素は arr[arr.length - 1]。
- push と pop は末尾で加えたり取り除いたりする。const の配列でも中身は変えられる。
- includes、indexOf、join でよくある問いに答えられる。
- i を 0 から i < length のあいだループさせるか、値だけなら for...of を使う。
このコースの出典 (2)
- MDN Web Docs, JavaScript Guide (developer.mozilla.org/en-US/docs/Web/JavaScript/Guide, chapters Introduction, Grammar and types, Control flow, Loops and iteration, Functions, Expressions and operators, Numbers and strings, Indexed collections, Working with objects; checked 2026-10-17)
- Ecma International, ECMA-262 ECMAScript 2026 Language Specification, 17th edition, June 2026 (tc39.es/ecma262 and ecma-international.org/publications-and-standards/standards/ecma-262, checked 2026-10-17)
確認日: 2026-10-17