質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
JavaScript

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

Q&A

解決済

2回答

561閲覧

JavaScript | filter()を使わずに抽出する方法

yuto_210301

総合スコア2

JavaScript

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

0グッド

0クリップ

投稿2021/04/17 01:47

編集2021/04/17 02:58

質問内容

filter()の内部構造を理解するためにfilter()を使わず同じように動作する機能を実装しようとしていますが、うまくいきません。どこをどのように修正すればよいでしょうか。理由も教えていただけると幸いです。

該当のソースコード

複数の生徒の中から得点が80点以上の生徒を抽出するコードです。

js

1const students = [{ 2 name: "Taro", 3 score: 100 4 }, 5 { 6 name: "Hanako", 7 score: 95 8 }, 9 { 10 name: "Ichiro", 11 score: 75 12 }, 13 { 14 name: "Jiro", 15 score: 60 16 }, 17] 18 19const newStudents = function imageFilter(isGreat); 20 21const isGreat = function(student) { 22 return student.score > 80; 23} 24 25function imageFilter(isGreat) { 26 const greatStudents = []; 27 28 for(const student of students) { 29 const isGreatStudent = isGreat(student); 30 if(isGreatStudent) { 31 greatStudents.push(student); 32 } 33 } 34 return greatStudents; 35} 36 37console.log(newStudents);

エラーメッセージ

Uncaught SyntaxError: Unexpected token ';'

###推測される原因
おそらく下記のコードに問題があるのですが、定数に関数を代入する際の文法について理解が浅く、検索で問題を解決できなかったため、質問させていただきました。

js

1const newStudents = function imageFilter(isGreat);

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

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

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

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

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

guest

回答2

0

ベストアンサー

javascript

1const students = [ 2 {name: "Taro",score: 100}, 3 {name: "Hanako",score: 95}, 4 {name: "Ichiro",score: 75}, 5 {name: "Jiro",score: 60}, 6 ]; 7 8const isGreat = (student)=>{ 9 return student.score > 80; 10} 11const imageFilter=(students)=> { 12 const greatStudents = []; 13 for(const student of students) { 14 const isGreatStudent = isGreat(student); 15 if(isGreatStudent) { 16 greatStudents.push(student); 17 } 18 } 19 return greatStudents; 20} 21const newStudents = imageFilter(students); 22console.log(newStudents);

投稿2021/04/17 12:46

yambejp

総合スコア115010

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

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

yuto_210301

2021/04/17 14:12

ご回答ありがとうございます。 yambejp 様のコードを参考に自分のコードを編集し、 ① 定数に関数を代入する方法 ② ①を記述する位置 に間違いがあることが分かりました。 いずれも初歩的な内容でお恥ずかしいですが、大変勉強になりました。
Zuishin

2021/04/17 14:15

勉強不足なのにこれならわかる不思議。
Zuishin

2021/04/17 14:16

ほんとに複数アカウントうざい。
guest

0

javascript

1const greatStudents = function imageFilter(isGreat);

この行は何を意図したものでしょうか。文法的に成立していません。

投稿2021/04/17 02:17

maisumakun

総合スコア145208

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

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

yuto_210301

2021/04/17 02:58

こちらの行は、imageFilter(isGreat)で返された配列を新たな定数に格納するという意味で記述しました。 見返してみると定数greatStudentsにgreatStudentsを代入するという処理になっていたため、修正して質問内容を変更しました。
maisumakun

2021/04/17 03:01

書き換えても文法的に成立していないことは変化していません。
yuto_210301

2021/04/17 03:34

度々コメントいただきありがとうございます。 勉強不足で基礎的な知識がまだまだ足りていないと感じました。 もっと基礎的な内容に立ち返ってみようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問