回答編集履歴
2
注意文を追加
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
ちょっとだけ修正
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 (
|
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')); // n
|
109
|
+
console.log(get(obj, 'parent.banana.jp')); // undefined
|
110
110
|
|
111
111
|
```
|