teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

文章を若干修正

2020/11/03 02:59

投稿

Automatic9045
Automatic9045

スコア313

answer CHANGED
@@ -10,8 +10,8 @@
10
10
 
11
11
  この2つを組み合わせれば綺麗に書けます。
12
12
 
13
- 初学者のうちはforは非常に身近なためよく使いがちですが、forループで実装しようとするとどうしても解読性の低いコードになってしまいます。
13
+ 初学者のうちはforは非常に身近なためよく使いがちですが、forループで実装しようとするとどうしても直感的に理しづらいコードになってしまいます。書いているご自身でも、自分が何を書いているのかよく分からなくなってしまっているのではないでしょうか。
14
- 今回提案したevery関数の他にも、find関数など、配列操作するコード直感的に理解しやすく書けるモダンな関数が沢山用意されているので、是非ご自分で調べてみて下さい。
14
+ 今回提案したevery関数の他にも、find関数など、配列操作を可読性高く書くためのモダンな関数が沢山用意されているので、是非ご自分で調べてみて下さい。
15
15
 
16
16
  ---
17
17
 

1

解決策のヒントとネタバレを追記

2020/11/03 02:59

投稿

Automatic9045
Automatic9045

スコア313

answer CHANGED
@@ -3,4 +3,21 @@
3
3
  かなり調べても望むものが見つからなかったときは、自分で実装の仕方を考える他ありません。
4
4
  私が実装するとしたら、
5
5
  「arr2の各要素について、arr1に含まれているか調べる」
6
- という方法をとると思います。
6
+ という方法をとると思います。
7
+
8
+ - 配列の各要素について試行を実施し、全ての試行がtrueとなるか試す`Array.prototype.every()`関数
9
+ - 配列内に特定の要素が存在するか調べる`Array.prototype.indexOf()`関数
10
+
11
+ この2つを組み合わせれば綺麗に書けます。
12
+
13
+ 初学者のうちはforは非常に身近なためよく使いがちですが、forループで実装しようとすると、どうしても解読性の低いコードになってしまいます。
14
+ 今回提案したevery関数の他にも、find関数など、配列を操作するコードを直感的に理解しやすく書けるモダンな関数が沢山用意されているので、是非ご自分で調べてみて下さい。
15
+
16
+ ---
17
+
18
+ ##≪以下ネタバレ、出来る限りご自分で頑張ってみて下さい≫
19
+ ``` JavaScript
20
+ if (arr2.every(element => arr1.indexOf(element) != -1)) {
21
+ console.log("全部ありました");
22
+ }
23
+ ```