回答編集履歴

2

注意文を追加

2020/03/03 06:16

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -48,11 +48,13 @@
48
48
 
49
49
 
50
50
 
51
- コードのテクニック解決るならば、
51
+ 毎回`(((obj.parent || {}).apple || {}).jp || null)`とか書くと読みづらくて仕方ないですね。
52
52
 
53
- [Ramda.jsのpath](https://ramdajs.com/docs/#path)や、
54
53
 
54
+
55
+ ES5でも何とか出来ます。
56
+
55
- [Lodashのget](https://lodash.com/docs/4.17.15#get)といった解決策があります。
57
+ [Ramda.jsのpath](https://ramdajs.com/docs/#path)や、[Lodashのget](https://lodash.com/docs/4.17.15#get)といった解決策があります。
56
58
 
57
59
 
58
60
 
@@ -65,6 +67,10 @@
65
67
 
66
68
 
67
69
  コードにするとこんな感じ
70
+
71
+ ただまぁ、LodashやRamda.jsといったライブラリの方がきちんとテストされているので、
72
+
73
+ 実際に導入するならライブラリを利用することをオススメします。
68
74
 
69
75
 
70
76
 

1

ちょっとだけ修正

2020/03/03 06:16

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
  JSでプロパティをチェーンする場合は`A.B.C`と書きたいのでくっそ邪魔ですね。
62
62
 
63
- なので文字列の`.`にしたり、配列を利用して再で取りに行く関数を実装すると良いでしょう。
63
+ なので文字列の`.`にしたり、配列を利用して再で取りに行く関数を実装すると良いでしょう。
64
64
 
65
65
 
66
66
 
@@ -94,7 +94,7 @@
94
94
 
95
95
  if (key == '') return obj; // 正常終了
96
96
 
97
- if (typeof obj !== 'object') return null; // 存在しないキー
97
+ if (obj == null) return obj; // 存在しないキー
98
98
 
99
99
  const keys = key.split('.');
100
100
 
@@ -106,6 +106,6 @@
106
106
 
107
107
  console.log(get(obj, 'parent.apple.jp')); // "りんご"
108
108
 
109
- console.log(get(obj, 'parent.banana.jp')); // null
109
+ console.log(get(obj, 'parent.banana.jp')); // undefined
110
110
 
111
111
  ```