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

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

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

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

Q&A

解決済

3回答

1094閲覧

JavaScriptの問題が解けない。

ah6BD2gZo5GnjnT

総合スコア46

JavaScript

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

0グッド

0クリップ

投稿2020/10/02 09:05

編集2020/10/02 09:06

----問題文----

このようなデータがあります

[{id: 1, name: "a", age: 20}, {id: 2, name: "b", age: 21}, {id: 3, name: "c", age: 20}]

ageが20の要素を抽出してください

-> expect [{id: 1, name: "a", age: 20}, {id: 3, name: "c", age: 20}]

なのですが、for文を使って以下のように求めましたが、どうやら違うみたいです。
どこから手をつけていいのかさっぱり分かりません。ご教授願います。

JavaScript

1const array = [ 2 { id: 1, name: "a", age: 20 }, 3 { id: 2, name: "b", age: 21 }, 4 { id: 3, name: "c", age: 20 } 5]; 6document.write(array); 7for (var i = 0; i < array.length; i++) { 8 if (array.age !== 20) { 9 /*ここでは、ageが20では無い要素を,既存の配列から取り除くということを行いたいです 10  がどのように表現したらいいのか分かりません。*/ 11 array.splice(array, 1); 12 document.write(JSON.stringify(array)); 13 } 14}

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

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

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

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

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

guest

回答3

0

ベストアンサー

抽出っていうくらだからfilterでしょう

javascript

1const result =array.filter(x=>x.age==20); 2console.log(result);

投稿2020/10/02 09:09

yambejp

総合スコア116724

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

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

0

配列をループで回しながら要素を取り除く場合、前から回していると

  • 0番目をチェックして外す→ループは次へ
  • 1番目(もとの2番めをチェック)

となってしまい、チェックから飛ぶ項目が発生します。

今回の場合、配列を加工せずに、「条件に当てはまるものだけ出力する」のが手っ取り早いかと思います。

投稿2020/10/02 09:08

maisumakun

総合スコア146018

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

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

maisumakun

2020/10/02 09:09

それとは別件ですが、document.write()は、現代ではまず使わないメソッドの代表格です。このようなものを使っている教材は確実に時代遅れですので、可能なら別な教材に乗り換えることをおすすめします。
ah6BD2gZo5GnjnT

2020/10/02 09:12

ご指摘、ありがとうございます。
guest

0

配列をループ処理しているとき、その配列自体を増減させるべきではありません。
ループしている配列とは別に、ageが20の要素のみを含む配列を新たに作成するのがよいでしょう。

javascript

1const array = [ 2 { id: 1, name: "a", age: 20 }, 3 { id: 2, name: "b", age: 21 }, 4 { id: 3, name: "c", age: 20 } 5]; 6 7let age20array = []; 8for (var i = 0; i < array.length; i++) { 9 if (array[i].age == 20) { 10 age20array.push(array[i]); 11 } 12} 13 14document.write(JSON.stringify(age20array));

投稿2020/10/02 09:16

ku__ra__ge

総合スコア4524

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

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

ah6BD2gZo5GnjnT

2020/10/02 09:22

先ほど、このやり方でも挑戦してみました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問