---
type: learn
language: javascript
slug: array/basics
title: "配列の基本 — 作る・取り出す・数える"
title_tag: "JavaScript 配列の基本 — 作る・取り出す・数える【第1回】"
summary: >
  配列は値を順番に並べて1つの名前で扱う入れ物です。作り方、番号での取り出し方、
  長さの数え方、範囲の外を読んだときに何が起きるかまでを、実行しながら確かめます。
description: >
  配列の作り方、番号での取り出し方、length の数え方。範囲の外を読んでも止まらないこと、push や pop が元を書き換えること、length に代入できてしまうことまで動かして確かめます。
status: published
difficulty: 1
minutes: 8

versions:
  verified: "Node 22.22.3"
  since: "ES1"
  deprecated: null
  removed: null

sources:
  - title: "Array Objects — ECMAScript® 2026 Language Specification"
    url: "https://tc39.es/ecma262/#sec-array-objects"
  - title: "Array — MDN"
    url: "https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array"

terms: [配列, 要素, 添字, length, 破壊的メソッド]

links:
  prev: null
  next: javascript/learn/array/loop
  related:
    - javascript/learn/object/basics
    - javascript/why/zero-index
    - javascript/errors/invalid-array-length

content_updated_at: 2026-09-07
published_at: 2026-09-07
---

[type:配列]は、値を[key:順番に並べて]、1つの名前で扱うための入れ物です。

```js run
const fruits = ['りんご', 'みかん', 'ぶどう'];

console.log(fruits);
```
```output
[ 'りんご', 'みかん', 'ぶどう' ]
```

`[` と `]` で囲み、`,` で区切ります。中身のひとつひとつを[type:要素]と呼びます。

## 番号で取り出す

`[]` に番号を書くと、その位置の要素が取れます。この番号を[type:添字]と呼びます。

```js run
const fruits = ['りんご', 'みかん', 'ぶどう'];

console.log(fruits[0]);
console.log(fruits[1]);
console.log(fruits[2]);
```
```output
りんご
みかん
ぶどう
```

**添字は [num:0] から始まります。** 1番目ではなく[num:0]番目です。
ここは最初につまずくところなので、覚えるより[em:何度も書いて慣れる]ほうが早いです。

上のコードは書き換えて実行できます。`fruits[1]` を `fruits[2]` にしてみてください。

## 範囲の外を読んでもエラーにならない

無い場所を読んでも、[key:止まりません]。`undefined` が返ります。

```js run
const fruits = ['りんご', 'みかん', 'ぶどう'];

console.log(fruits[3]);
console.log(fruits[-1]);
```
```output
undefined
undefined
```

**ここが後で効いてきます。** 止まらないので、間違いにその場では気づけません。
`undefined` を持ったまま先へ進み、[bad:別の場所で落ちます]。

```js bad
const fruits = ['りんご', 'みかん', 'ぶどう'];

console.log(fruits[3].length);
```
```output
TypeError: Cannot read properties of undefined (reading 'length')
```

エラーが出た場所（`.length` のところ）と、[key:原因の場所]（`fruits[3]` が空振りしたこと）は違います。

## 数える

`length` で要素の数が分かります。

```js run
const fruits = ['りんご', 'みかん', 'ぶどう'];

console.log(fruits.length);
console.log([].length);
```
```output
3
0
```

添字は[num:0]から始まるので、**最後の要素は `length - 1` 番目**です。

```js run
const fruits = ['りんご', 'みかん', 'ぶどう'];

console.log(fruits[fruits.length - 1]);
console.log(fruits.at(-1));
```
```output
ぶどう
ぶどう
```

`at(-1)` は「後ろから1番目」と書ける新しい書き方です。**どちらでも構いません。**

## 足す・取る

末尾に足すのが `push()`、末尾から取るのが `pop()` です。

```js run
const fruits = ['りんご', 'みかん'];

fruits.push('ぶどう');
console.log(fruits);

const last = fruits.pop();
console.log(last);
console.log(fruits);
```
```output
[ 'りんご', 'みかん', 'ぶどう' ]
ぶどう
[ 'りんご', 'みかん' ]
```

この2つは[type:破壊的メソッド]です。**元の配列そのものを書き換えます。**

先頭を扱う `unshift()` / `shift()` もありますが、
[dim:先頭に入れると後ろの要素を全部ずらすことになるため、要素が多いと遅くなります。]

## length に代入すると切れる

`length` は読むだけのものではありません。**代入できます。**

```js run
const nums = [1, 2, 3, 4, 5];

nums.length = 2;
console.log(nums);

nums.length = 4;
console.log(nums);
```
```output
[ 1, 2 ]
[ 1, 2, <2 empty items> ]
```

短くすると[bad:切り捨てられます]。長くしても値は入らず、[key:空きができるだけ]です。
`<2 empty items>` は「[type:穴]が2つある」という意味で、`undefined` が入っているのとは違います。

[dim:表示のしかたは処理系によって違います。上は Node 22.22.3 の出力です。]

**ふだんは `length` に代入しません。** そういう挙動がある、とだけ知っておいてください。

## 中身の型は混ぜられる

JavaScript の配列は、[key:違う種類の値を同じ配列に入れられます]。

```js run
const mixed = [1, 'あ', true, null, [2, 3]];

console.log(mixed);
console.log(mixed.length);
console.log(mixed[4][0]);
```
```output
[ 1, 'あ', true, null, [ 2, 3 ] ]
5
2
```

配列の中に配列も入ります。ただし**混ぜられることと、混ぜてよいことは別**です。
[bad:ふだんは同じ種類のものだけを入れてください]。あとで扱いに困ります。

## まとめ

- 配列は値を[key:順番に]並べる入れ物。`[]` で作る
- 添字は[num:0]から。最後は `length - 1` 番目
- 範囲の外を読んでも[bad:止まらない]。`undefined` が返る
- `push()` / `pop()` は[em:元の配列を書き換える]
- `length` は数えるだけでなく[em:代入もできてしまう]

## 次に学ぶ

配列の中身を[key:1つずつ順番に処理する]方法を学びます。
`for` / `for...of` / `forEach()` の3つを、違いが分かる形で比べます。

→ [第2回: 配列を繰り返す](/ja/javascript/learn/array/loop/)

[dim:配列の一部を取り出したり、途中に差し込んだりする方法は、第2回のあとで読むと分かりやすくなります。]
→ [slice() と splice()](/ja/javascript/reference/array/slice/)
