今日の参考コード

前回は配列の中にオブジェクトをしまいました。

今回は、オブジェクトの中に配列をしまいます!

オブジェクトの中にも、なんでも入ります!

同じクラスにいる人の名簿用の配列を作って、クラスの情報のためのオブジェクトにしまう

myClass というオブジェクトには、自分のクラスの情報が入れます。

クラスの名前や、それから何組なのか、そしてクラスメイトの名簿です。

この名簿は配列で作ります。

そして myClass で保持します。

3 つのオブジェクトを配列にしまう
// 配列を作る
const memberList = ["sasaki", "jimmy", "john"];

// オブジェクトの中にしまう
const myClass = {
  members: memberList,
  className: "Terakoya",
  classNumber: 2
};

こうすれば、クラスに関連する情報が全てオブジェクトとして持つことができますね。

テストでオブジェクトのプロパティの値をチェックしていく

さて、今回も一気に書いてしまいます。

オブジェクトに配列が入っていても、ほとんど前回やった配列にオブジェクトが入っているケースとやることは同じですね。あとは慣れの問題です。

オブジェクトが入った配列をチェックする
import { getType } from "typechecker";

describe("object", () => {
  // 配列を作る
  const memberList = ["sasaki", "jimmy", "john"];

  // オブジェクトの中にしまう
  const myClass = {
    // これ
    members: memberList,
    className: "Terakoya",
    classNumber: 2
  };

  // test の内容開始
  it("myClass の型", () => {
    const res = getType(myClass);
    expect(res).toEqual("object");
  });

  describe("myClass の各プロパティの型と値をチェック", () => {
    it("myClass.members の型", () => {
      const res = getType(myClass.members);
      expect(res).toEqual("array");
    });

    it("myClass.members の値", () => {
      const res = myClass.members;
      const expected = ["sasaki", "jimmy", "john"];
      expect(res).toEqual(expected);
    });

    it("myClass.members[1] の値", () => {
      const members = myClass.members;
      const res = members[1];
      expect(res).toEqual("jimmy");
    });

    it("myClass.className の型", () => {
      const res = getType(myClass.className);
      expect(res).toEqual("string");
    });

    it("myClass.className の値", () => {
      const res = myClass.className;
      expect(res).toEqual("Terakoya");
    });
  });
});

配列にオブジェクトを入れることができるし、オブジェクトに配列を入れられるということは…

「配列にオブジェクトを入れることができるし、オブジェクトに配列を入れられる」ということは、つまり「無限に入れ子にできる」とうことです。

マトリョーシカのように、どんどん深くしていくことが理論上は可能です。読みやすいかは別として。

宿題

  • オブジェクトを作る
  • そのオブジェクトのプロパティの少なくとも一つに「配列」をしまう
  • テストを書いて、値や型をチェック!

今日は以上です!!