🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

1回答

522閲覧

lookupByGraduatedAt() と lookupByDepartment() を作りたい(下記の出力結果を得られるようにしたい)

Heeerooo

総合スコア1

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2021/02/09 04:36

編集2021/02/09 05:38

前提・実現したいこと

lookupByGraduatedAt() と lookupByDepartment() を作りたい

JavaScriptを使っています

発生している問題・エラーメッセージ

MembershipListが定義されていません

該当のソースコード

<script> class Graduate { constructor(name, graduateAt, department) { this.name = name, this.graduateAt = graduateAt, this.department = department } } class Name extends Graduate { constructor() { super("田中太郎", "佐藤美咲", "武田次郎") } } class GraduateAt extends Graduate { constructor() { super(1990, 2000, 1995) } } class Department extends Graduate { constructor() { super("理工学部", "文学部", "商学部") } } class MembershipList{ list = [] append(list){ this.list.append(list) } getList(){ return this.list } } const list = new Membershiplist(); list.append(new Graduate("田中太郎", 1990, "理工学部")); list.append(new Graduate("佐藤美咲", 2000, "文学部")); list.append(new Graduate("武田次郎", 1995, "商学部")); alert(list.lookupByGraduatedAt(1990).name); alert(list.lookupByDepartment("文学部").name); /*出力結果 田中太郎 佐藤美咲*/ </script>

試したこと

MembershipListを定義しようとしましたが中々できませんでした

補足情報(FW/ツールのバージョンなど)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2021/02/09 04:49

「コードを打てるように」というのが意味が不明瞭です。lookupByGraduatedAt() と lookupByDepartment() を作りたいという意味でしょうか? 何がわかりませんか? ダメだった「様々な方法」も書いてください。
Heeerooo

2021/02/09 04:58 編集

すみません、初心者マークをつけるのを忘れていました。 ご指摘通りに修正してみました。よろしくお願いします
int32_t

2021/02/09 06:23

まだ丸投げ感が強すぎて回答が付かないですね。 何がわからないのか、どこまでわかるのか書きましょう。メソッドの追加方法はわかりますか? メソッドから値を返す方法はわかりますか? 配列から条件に合うものを探す方法はわかりますか?
Heeerooo

2021/02/10 02:22

いいえ。何もわからないので個人でも、もう一度勉強しなおした方がいいと感じました。 今後とも何かあったらメッセージくれるとありがたいです。
guest

回答1

0

ベストアンサー

lookupByGraduatedAt, lookupByDepartment は配列を返すようにしました。
extends を使った拡張が何を意味するのか理解していない。

js

1 2class Graduate { 3 constructor(name, graduateAt, department) { 4 this.name = name, 5 this.graduateAt = graduateAt, 6 this.department = department 7 } 8} 9 10 11class MemberShipList{ 12 constructor (list = [ ]) { 13 this.list = [...list]; 14 } 15 append (...graduate) { 16 this.list.push (...graduate); 17 return this; 18 } 19 20 lookupByGraduatedAt (n) { 21 return this.list.filter (g=> g.graduateAt == n); 22 } 23 24 lookupByDepartment (n) { 25 return this.list.filter (g=> g.department == n); 26 } 27} 28 29 30 31 32 33const list = new MemberShipList(); 34list.append ( 35 new Graduate("田中太郎", 1990, "理工学部"), 36 new Graduate("佐藤美咲", 2000, "文学部"), 37 new Graduate("武田次郎", 1995, "商学部"), 38); 39 40alert(list.lookupByGraduatedAt(1990).map (g=>g.name).join (', ')); 41alert(list.lookupByDepartment("文学部").map (g=>g.name).join (', ')); 42 43 44

投稿2021/02/09 06:28

babu_babu_baboo

総合スコア616

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Heeerooo

2021/02/10 02:20

回答ありがとうございます。 継承がなんなのか全く理解できていないことに気づけました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問