回答編集履歴

4

Unix哲学について追記

2019/07/27 13:11

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -64,7 +64,11 @@
64
64
 
65
65
 
66
66
 
67
- ただ個人的意見ですが、そもそも上記のようなfilterコードを書かなければいけないようなデータ構造になっている事自体が良くないのではないかと思います。私なら以下のようなデータ構造にして、そもそもfilterをかけなくても扱えるようにするかなと思います。
67
+ 余談ですが[Unix哲学](https://ja.wikipedia.org/wiki/UNIX%E5%93%B2%E5%AD%A6)の中で「スマートデータを使うつまらないコードを書け」という有名な言葉があります。要は「複雑なロジックが必要になっているということはそもそもデータ構造が良くない」というような考え方なのですが、その考えに沿うなら、そもそも上記のようなfilterコードを書かなければいけないようなデータ構造になっている事自体が良くないのではないかと思います。私なら以下のようなデータ構造にして、filterをかけなくても扱えるようなデータ構造にするかなと思います。
68
+
69
+
70
+
71
+
68
72
 
69
73
 
70
74
 

3

データ構造について追記

2019/07/27 13:11

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -64,6 +64,40 @@
64
64
 
65
65
 
66
66
 
67
+ ただ、個人的な意見ですが、そもそも上記のようなfilterコードを書かなければいけないようなデータ構造になっている事自体が良くないのではないかと思います。私なら以下のようなデータ構造にして、そもそもfilterをかけなくても扱えるようにするかなと思います。
68
+
69
+
70
+
71
+ ```
72
+
73
+ {
74
+
75
+ customer_id: 12,
76
+
77
+ pointId:1,
78
+
79
+ points: {
80
+
81
+ pointA: 132,
82
+
83
+ pointB: 54,
84
+
85
+ pointC: 234,
86
+
87
+ pointD: 812,
88
+
89
+ pointE: 87,
90
+
91
+ },
92
+
93
+ }
94
+
95
+ ```
96
+
97
+
98
+
99
+ ---
100
+
67
101
 
68
102
 
69
103
  以下はJavascriptのコードです。最初は以下を回答としていたのですが、TypeScriptでは、環境によっては`Object.entries()`が動かない場合がある(https://patrickdesjardins.com/blog/typescript-and-object-entries の対応が必要)ので`Object.keys()`を使った回答に変更しました。一応回答としては残しておきます。

2

説明を修正

2019/07/27 13:05

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
 
68
68
 
69
- 以下はJavascriptのコードです。最初は以下を回答としていたのですが、TypeScriptでは現時点で`Object.entries()`に対応していないので、以下のコードは動きませんでした。Javascript環境では動くので一応回答としては残しておきます。
69
+ 以下はJavascriptのコードです。最初は以下を回答としていたのですが、TypeScriptでは、環境によっては`Object.entries()`が動かない場合がある(https://patrickdesjardins.com/blog/typescript-and-object-entries 対応が必要)の`Object.keys()`を使った回答に変更しました。一応回答としては残しておきます。
70
70
 
71
71
 
72
72
 

1

TypeScriptでの回答を追加

2019/07/27 12:39

投稿

KuwabataK
KuwabataK

スコア306

test CHANGED
@@ -15,6 +15,58 @@
15
15
  ここらへんを組み合わせると、文字列の配列の中から特定の文字列が存在するもののみを取り出す事ができます。
16
16
 
17
17
 
18
+
19
+ TypeScriptで書くなら以下のようになると思います
20
+
21
+
22
+
23
+
24
+
25
+ ```TypeScript
26
+
27
+ const json = {
28
+
29
+ id: 12,
30
+
31
+ point: {
32
+
33
+ id: 1,
34
+
35
+ pointA: 132,
36
+
37
+ pointB: 54,
38
+
39
+ pointC: 234,
40
+
41
+ pointD: 812,
42
+
43
+ pointE: 87,
44
+
45
+ customer_id: 12,
46
+
47
+ },
48
+
49
+ }
50
+
51
+
52
+
53
+ const res = Object.keys(json.point).filter( key =>{
54
+
55
+ return key.includes('point')
56
+
57
+ }).map(key => ({[key]: (json.point as {[key:string]:number})[key]}))
58
+
59
+
60
+
61
+ console.log(res)
62
+
63
+ ```
64
+
65
+
66
+
67
+
68
+
69
+ 以下はJavascriptのコードです。最初は以下を回答としていたのですが、TypeScriptでは現時点で`Object.entries()`に対応していないので、以下のコードは動きませんでした。Javascript環境では動くので、一応回答としては残しておきます。
18
70
 
19
71
 
20
72