回答編集履歴
2
mapを使う理由付けを記載
answer
CHANGED
@@ -13,6 +13,13 @@
|
|
13
13
|
このコードを読んだ人が貴方を「こいつ大嘘吐きのペテン野郎だな」と評価するでしょう。
|
14
14
|
処理するならforEachを使うべきです。
|
15
15
|
|
16
|
+
しかし、重複してるコピペコードをよく見てください。
|
17
|
+
変更箇所は`"102", "201", "202", "303", "401"`の部分だけですよね?
|
18
|
+
ならば最も適切なのは`["102", "201", "202", "303", "401"]`というルームナンバーリストという配列からmapでキー情報を取り出す事になります。
|
19
|
+
|
20
|
+
これでコピペコード郡が一掃されます。
|
21
|
+
それではいきましょう。
|
22
|
+
|
16
23
|
```js
|
17
24
|
const keys = [
|
18
25
|
{"keyno":"A1","room1":"102","room2":"103"},
|
@@ -21,8 +28,8 @@
|
|
21
28
|
{"keyno":"D4","room1":"401"},
|
22
29
|
];
|
23
30
|
|
24
|
-
//
|
31
|
+
// このように欲しい鍵情報の配列を準備したが
|
25
|
-
//
|
32
|
+
// 直接["102", "201", "202", "303", "401"].map(fn)とやっても良い
|
26
33
|
const rooms = ["102", "201", "202", "303", "401"];
|
27
34
|
const result = rooms
|
28
35
|
.map(room =>
|
1
filter→findの本文追加
answer
CHANGED
@@ -53,7 +53,16 @@
|
|
53
53
|
---
|
54
54
|
|
55
55
|
続いて本当にfilterが妥当なものなのかを考える必要があります。
|
56
|
+
before、afterのデータとコードを見る限りfilterである意味が微塵もありません。
|
56
57
|
|
58
|
+
一つの鍵で複数の部屋を開けられる(マスターキー?)という時点で仰天ですが、
|
59
|
+
その割には大した数のドアは開けられませんし、掃除してくれる方に対するセキュリティなのかな?
|
60
|
+
まぁいいや、清掃担当用のマスターキーと仮定しましょう。
|
61
|
+
|
62
|
+
もし一つの部屋が複数のマスターキーで開けられて、
|
63
|
+
全ての鍵を列挙しなければならないのであれば別ですが、
|
64
|
+
一つの部屋が一つのマスターでしか開けられない前提ならばfilterは混乱の元でしかないのでfindにしてしまいましょう。
|
65
|
+
|
57
66
|
```js
|
58
67
|
const keys = [
|
59
68
|
{"keyno":"A1","room1":"102","room2":"103"},
|