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

回答編集履歴

3

テキスト修正

2020/02/11 14:13

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -107,7 +107,7 @@
107
107
  return false;
108
108
  }
109
109
  ```
110
- ただ、上記だと、コード行数が増えますので、行数を減らそうとして`return`なしのアロー関数で書こうとすると、どこかで`reList` に `push` しなければならないので、違和感のあるとお感じの現状にならざるを得ないです。このように、アローの先の`return`を書かずにすむ行数の少ないコードを取るか、読んで違和感のよりないコードを採るか、という選択が互いにトレードオフになることは、ままあります。(ちなみに、業務での二者の選択があったら、読みやすいほうを私は採ります。)
110
+ ただ、上記だと、コード行数が増えますので、行数を減らそうとして`return`なしのアロー関数で書こうとすると、どこかで`reList` に `push` しなければならないので、違和感のあるとお感じの現状にならざるを得ないです。このように、アローの先の`return`を書かずにすむ行数の少ないコードを取るか、読んで違和感のよりないコードを採るか、という選択が互いにトレードオフになることは、ままあります。(ちなみに、業務でような二者の選択があったら、読みやすいほうを私は採ります。)
111
111
 
112
112
  コード全体の見直しに関しては、この回答の冒頭に挙げた
113
113
 

2

テキスト修正

2020/02/11 14:13

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -82,4 +82,36 @@
82
82
 
83
83
  - **動作確認用CodePen:** [https://codepen.io/jun68ykt/pen/abOOoRy?editors=0012](https://codepen.io/jun68ykt/pen/abOOoRy?editors=0012)
84
84
 
85
- 以上、参考になれば幸いです。
85
+ 以上、参考になれば幸いです。
86
+
87
+
88
+ ### 追記
89
+
90
+ 全体的な修正案ではなく、ご質問のコードの問題の部分
91
+ ```javascript
92
+ key => /^room/.test(key) && x[key] === "102" && reList.push({"keyno":x.keyno ,"room":key,"room_no":x[key]})
93
+ ```
94
+
95
+ についての本題である、
96
+
97
+ > someの条件部にpushを書いているのが、違和感がありまして。。
98
+
99
+ との違和感を無くすこと**のみ**に目的を限って、この部分への局所的な修正案を挙げますと、上記を以下のようにすれば、その違和感は多少減るのではと思います。
100
+
101
+ ```javascript
102
+ key => {
103
+ if (/^room/.test(key) && x[key] === "102") {
104
+ reList.push( { "keyno":x.keyno ,"room":key,"room_no":x[key] } );
105
+ return true;
106
+ }
107
+ return false;
108
+ }
109
+ ```
110
+ ただ、上記だと、コード行数が増えますので、行数を減らそうとして`return`なしのアロー関数で書こうとすると、どこかで`reList` に `push` しなければならないので、違和感のあるとお感じの現状にならざるを得ないです。このように、アローの先の`return`を書かずにすむ行数の少ないコードを取るか、読んで違和感のよりないコードを採るか、という選択が互いにトレードオフにになることは、ままあります。(ちなみに、業務でこの二者の選択があったら、読みやすいほうを私は採ります。)
111
+
112
+ コード全体の見直しに関しては、この回答の冒頭に挙げた
113
+
114
+ - 1. some を使いつつ見通しをよくする。
115
+ - 2. keys から別のデータ構造を作り、そこから結果を得る
116
+
117
+ や、他の回答者様からも有用な知見やコードが提示されていますので、そちらを参考にされるとよいかと思います。

1

テキスト修正

2020/02/11 14:02

投稿

jun68ykt
jun68ykt

スコア9058

answer CHANGED
@@ -51,14 +51,13 @@
51
51
 
52
52
  ### 2. keys から別のデータ構造を作り、そこから結果を得る
53
53
 
54
- 他の回答者様からも、keys から別のデータ構造を作る案がすでに提示されていますが、以下もそれらと同様に、別のデータ構造を得たうえで、そこから結果を得るようにたものです。以下では、キーと値が以下
54
+ 他の回答者様からも、keys から別のデータ構造を作る案がすでに提示されていますが、以下もそれらと同様に、別のデータ構造を得たうえで、そこから結果を得るようにたものです。以下では、キーと値が
55
55
 
56
56
  ```
57
57
  "102" => { keyno: 'A1', room: 'room1' }
58
58
  ```
59
+ という形のエントリを全部屋分持った [Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map)を作って、そこから結果を得ます。
59
60
 
60
- のような形のエントリを全部屋分持った[Map](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Map)を作って、そこから結果を得ます
61
-
62
61
  ```javascript
63
62
  const roomsMap = keys.reduce((map, keyInfo) => (
64
63
  new Map([