JavaScript | 配列

JavaScript JavaScript
スポンサーリンク

配列は「値を順番に並べて入れる『箱の列』」だと考えると分かりやすいです。ここでは初心者向けに、基本からよく使う操作、具体例、練習問題(解答付き)まで分かりやすくまとめます。


1. 配列って何?(イメージ)

  • 配列 = 「ロッカーが並んだ棚」。
    各ロッカーには 0, 1, 2… という番号(インデックス)が振ってあり、そこに値を入れます。
  • 例:3人分の点数を一つにまとめるとき
let scores = [85, 78, 92];
JavaScript

これで scores[0] が 85、scores[1] が 78、scores[2] が 92 です。


2. 宣言のしかた(よく使うパターン)

// リテラル(よく使う)
let a = [1, 2, 3];

// 空の配列を作る
let empty = [];

// new を使う(あまり必要ない)
let b = new Array(10); // 長さ10の空配列(中身は undefined)
let c = new Array(1, 2, 3); // [1,2,3]
JavaScript

3. 要素にアクセス(読み書き)

let names = ['Alice', 'Bob', 'Charlie'];

console.log(names[0]); // 'Alice'
names[1] = 'Bobby';   // 2番目を更新
console.log(names[1]); // 'Bobby'
JavaScript
  • インデックスは 0から始まる(重要!)。
  • 存在しないインデックスを読むと undefined が返ります。

4. 長さ(要素数)の取得

let arr = [10, 20, 30, 40];
console.log(arr.length); // 4
JavaScript

length を使えばループで安全に回せます(最後まで行ってしまう心配が減る)。


5. よく使う基本メソッド

  • push(value) : 末尾に追加(ロッカー棚の一番右に入れる)
  • pop() : 末尾を取り出す(右から1つ取り出す)
  • unshift(value) : 先頭に追加(左に詰める)
  • shift() : 先頭を取り出す
  • indexOf(value) : 値の最初の位置(インデックス)を返す(無ければ -1)
  • includes(value) : 含まれるかどうか(true/false)
  • slice(start, end) : 部分配列を取り出す(非破壊)start から end-1 まで
  • splice(start, deleteCount, ...items) : 要素の削除・挿入(破壊)
  • concat(other) : 配列どうしを結合して新しい配列を作る(非破壊)
  • join(sep) : 配列を文字列にする(区切り文字を指定)
  • sort() : 配列を並べ替える(文字列としての並びになる点に注意)
  • reverse() : 逆順にする(破壊的)
  • map(fn) : 各要素を変換して新しい配列を作る
  • filter(fn) : 条件に合う要素だけを集めて新しい配列を作る
  • reduce(fn, initial) : 配列を畳んでひとつの値にする(合計など)

6. 例題:点数の合計と平均(forループ版)

let scores = [85, 78, 92, 64, 100];
let sum = 0;
for (let i = 0; i < scores.length; i++) {
  sum += scores[i];
}
console.log('合計:', sum);             // 合計: 419
console.log('平均:', sum / scores.length); // 平均: 83.8
JavaScript

計算は小数になることがあるので必要なら Math.round()toFixed() で整えます。


7. 同じ処理を短く:for…of や forEach

// for...of
let sum2 = 0;
for (let v of scores) {
  sum2 += v;
}

// forEach
let sum3 = 0;
scores.forEach(function(v) { sum3 += v; });
JavaScript

8. map/filter/reduce の便利例

  • 各点数を 1.1 倍(例:補正点)して新配列を作る(map
let boosted = scores.map(v => Math.min(100, Math.round(v * 1.1))); // 上限100に丸め
// boosted は [94, 86, 101→100, 70, 110→100] → [94,86,100,70,100]
JavaScript
  • 60点以上だけ抽出(合格者のみ)(filter
let pass = scores.filter(v => v >= 60); // [85,78,92,64,100]
JavaScript
  • 合計を reduce で一行で(応用)
let sum4 = scores.reduce((acc, v) => acc + v, 0);
JavaScript

9. 注意点:sort() の落とし穴

sort() はデフォルトで 文字列として比較します。

let nums = [1, 30, 4, 21, 100000];
nums.sort();
console.log(nums); // [1, 100000, 21, 30, 4]  ← 期待と違う
JavaScript

数値で並べたい場合は比較関数を渡します:

nums.sort((a,b) => a - b);
console.log(nums); // [1, 4, 21, 30, 100000]
JavaScript

10. 例題:重複を取り除く(Set を使う)

let arr = [1,2,2,3,4,3,5];
let unique = Array.from(new Set(arr)); // [1,2,3,4,5]
JavaScript

初心者でも知っておくと便利なワザです。


11. 実践的な小さな例 — 名前リストを整形して表示

let names = [' alice ', 'BOB', 'Charlie  '];

// 先頭と末尾の空白を削り、先頭だけ大文字にして表示
let clean = names.map(n => {
  let s = n.trim().toLowerCase();
  return s.charAt(0).toUpperCase() + s.slice(1);
});

console.log(clean.join(', ')); // "Alice, Bob, Charlie"
JavaScript

12. 練習問題(手を動かそう) — 解答付き

問題1

配列 [2, 5, 3, 8, 1] の合計を求めよ(for で)。

解答例

let a = [2,5,3,8,1];
let s = 0;
for (let i=0; i<a.length; i++) s += a[i];
console.log(s); // 19
JavaScript

問題2

配列 [12, 7, 9, 20, 3] から 10以上 の要素だけを抽出して新しい配列を作れ(filter を使う)。

解答例

let arr = [12,7,9,20,3];
let over10 = arr.filter(x => x >= 10);
console.log(over10); // [12, 20]
JavaScript

問題3

文字列配列 ['red','blue','green']'-' で連結して 'red-blue-green' を作れ(join)。

解答

let colors = ['red','blue','green'];
console.log(colors.join('-')); // 'red-blue-green'
JavaScript

問題4

配列 [3,1,4,1,5,9,2] を昇順にソートせよ(数値として)。

解答

let a = [3,1,4,1,5,9,2];
a.sort((x,y) => x - y);
console.log(a); // [1,1,2,3,4,5,9]
JavaScript

問題5(少し応用)

配列 [10, 20, 30] の平均を reduce を使って求めよ。

解答

let a = [10,20,30];
let sum = a.reduce((acc, v) => acc + v, 0);
let avg = sum / a.length;
console.log(avg); // 20
JavaScript

13. まとめ(初心者がまず覚えるべきポイント)

  1. 配列は「0始まりのインデックス」で値を順番に格納する。
  2. length は要素数。ループで使うと便利。
  3. push/pop/shift/unshift は要素の追加/削除に使う。
  4. map/filter/reduce は配列処理を短く・読みやすくする強力な道具。
  5. sort() はデフォルトで文字列比較。数値は比較関数を渡す。
タイトルとURLをコピーしました