Skip to content

Latest commit

 

History

History
129 lines (94 loc) · 4.83 KB

syslec3-7.md

File metadata and controls

129 lines (94 loc) · 4.83 KB

さまざまなデータを扱おう

今回の目標

配列と連想配列を使いこなせるようになる

配列から

例えば、以下のように変数を宣言しようとします。

let test1
let test2
let test3
......

以上のようにすると大変ですよね。そこでいくつかの値をまとめてあつかう方法があります。それが配列です。

配列は、変数と同じように値を代入して保管しておくことができます。ただ今回は変数とは違い、箱が何個も続いているというイメージでみるといいと思います。そして、それぞれの箱には添字(インデックス)と呼ばれる番号が0からつけられています。

数値や文字列を使ったのと同じように配列を代入することで使うことができます。

let 配列名 = [] //配列の代入

配列名[インデックス] = 

とりあえず、具体例を見ましょう。以下のように添字を指定して、代入します。まだ、代入されていない番号のところは、未定義を表すundefinedが入っています。

let test = []
test[0] = 53
test[1] = 54

また、以下のように初期化ができます。

let test = [53, 54]

試しに、3つ要素がある配列を引数にとり、最大値を返す関数を実装してみましょう。

ヒント

配列の最初から順番に参照していけば最大値はわかりますね。

答え
function max(array){
    let maximum = array[0];
    for(let i = 0;i < 3;i = i + 1) {
        if (array[i] > maximum) {
            maximum = array[i]
        }
    }
    return maximum
}
ちなみに配列の長さは、array.lengthとすればわかります。それを使うと配列の長さによらず、最大値を返すことができます。
function max(array) {
    let maximum = array[0]
    for (let i = 0;i < array.length;i = i + 1) {
        if (array[i] > maximum) {
            maximum = array[i]
        }
    }
    return maximum
}

連想配列

さて、連想配列です。先ほどは番号が整数でした。今度は番号がなんでもよくなったものだと、とりあえず、思えばいいです。つまり、文字列で箱を指定することができます。

このとき、箱を指定するものを**キー(key)とよび、指定されるものを値(value)**と呼びます。

配列と同じように変数に代入することで使うことができます。

let 連想配列名 = {} 

箱の指定の仕方は2通りあります。

連想配列名.キー

連想配列名[キー]

1つ目のドットの方法は、キーが文字列ではないと使えません。また、変数を使って、キーを指定する場合は2つ目の方法しか無理です。

ともかく具体例を見ましょう。

let greeting = {}
greeting["japanese"] = "こんにちは"
greeting.english = "Hello"
let country = "english"

console.log(greeting[country])

また、初期化ができます。

let greeting = {
        japanese: "こんにちは",
        english: "Hello",
    }

この連想配列はよく使うので、しっかり覚えておきましょう。

小話

ここは無視していいです。

実は、上の連想配列のデータ構造はJavaScriptのもともと連想配列用でない機能を使って実現しています。その機能はオブジェクトと呼ばれます。オブジェクトはいろいろな変数や関数をまとめたものです。

オブジェクトの中の変数をプロパティといい、関数をメソッドといいます。つまり、上の連想配列はオブジェクトのプロパティの機能を使って実現したものです。

ここで、少しconsole.log()という関数を思い出しましょう。そうするとこれもconsoleというオブジェクトにlog()というメソッドが入っていることがわかるでしょうか? 他には、alert()も実はメソッドです。windowというオブジェクトの中に入っています。しかし、windowというオブジェクト名は省略可能なので、alert()だけで動きます。

実は、JavaScriptは基本このオブジェクトで作られています。何を言っているかわからないと思います。僕もちゃんと教えられないです。関数もオブジェクトらしいですし、変数スコープ(後ろを参照)もオブジェクトらしいです。