回答編集履歴
75
テキスト修正
test
CHANGED
@@ -148,7 +148,7 @@
|
|
148
148
|
|
149
149
|
|
150
150
|
|
151
|
-
ともありました。そのような状況の中で Lodashを見つけ出して、それを使ってみようと思い、実際コードを書いてみたというチャレジは**とてもよい**と思います。ですので、まずは Lodashを使って、主題の「ネストされたオブジェクト間の差分を取得する方法」を探ってみましょう。
|
151
|
+
ともありました。そのような状況の中で Lodashを見つけ出して、それを使ってみようと思い、実際コードを書いてみたというチャレンジは**とてもよい**と思います。ですので、まずは Lodashを使って、主題の「ネストされたオブジェクト間の差分を取得する方法」を探ってみましょう。
|
152
152
|
|
153
153
|
|
154
154
|
|
74
テキスト修正
test
CHANGED
@@ -372,7 +372,7 @@
|
|
372
372
|
|
373
373
|
|
374
374
|
|
375
|
-
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
375
|
+
> 中身がブラックボックスなので、なんか良くわからないけど出来たという感覚
|
376
376
|
|
377
377
|
|
378
378
|
|
73
テキスト修正
test
CHANGED
@@ -152,7 +152,7 @@
|
|
152
152
|
|
153
153
|
|
154
154
|
|
155
|
-
ご質問から業務でコードを書いている中での課題と思われますが、仕事の中でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissueに拠り所を求める
|
155
|
+
ご質問から業務でコードを書いている中での課題と思われますが、仕事の中でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissueに拠り所を求めることが多いです。
|
156
156
|
|
157
157
|
|
158
158
|
|
72
テキスト修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。
|
5
|
+
オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。実際、私も同じ課題に直面したら、まずは、Lodash に便利なメソッドはないか?と探すと思います。
|
6
6
|
|
7
7
|
|
8
8
|
|
71
テキスト修正
test
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
ただし、ご質問に挙げられている
|
9
|
+
ただし、ご質問に挙げられている以下の [_.omitBy](https://lodash.com/docs/4.17.10#omitBy) を使ったコード
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -112,7 +112,7 @@
|
|
112
112
|
|
113
113
|
`_.omitBy(objectB, (v, k) => objectA[k] === v)`
|
114
114
|
|
115
|
-
というコードを拝読して、お伝えしたいこととしては、以下の3点
|
115
|
+
というコードを拝読して、お伝えしたいこととしては、以下の3点です。
|
116
116
|
|
117
117
|
|
118
118
|
|
@@ -124,7 +124,7 @@
|
|
124
124
|
|
125
125
|
|
126
126
|
|
127
|
-
|
127
|
+
これらについて以下順を追って回答します。
|
128
128
|
|
129
129
|
|
130
130
|
|
70
テキスト修正
test
CHANGED
@@ -492,7 +492,7 @@
|
|
492
492
|
|
493
493
|
|
494
494
|
|
495
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけません。」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような、言わば巷で流行の道具に目が行って、それに飛びつくことができるというのは、(これからもキープすべき)良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと
|
495
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけません。」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような、言わば巷で流行の道具に目が行って、それに飛びつくことができるというのは、(これからもキープすべき)良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと試行錯誤した結果、「基礎力が足りない」と自分でちゃんと納得して結論することができ、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、理解不足を感じた基礎項目に立ち返り、基礎を点検できたらまた応用に取り組むということを繰り返すうちに、基礎を見直すことと応用的な取り組みとの間の、自分なりのバランスが出来ていきます。
|
496
496
|
|
497
497
|
|
498
498
|
|
69
テキスト修正
test
CHANGED
@@ -492,7 +492,7 @@
|
|
492
492
|
|
493
493
|
|
494
494
|
|
495
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけ
|
495
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけません。」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような、言わば巷で流行の道具に目が行って、それに飛びつくことができるというのは、(これからもキープすべき)良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論することができ、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、理解不足を感じた基礎項目に立ち返り、基礎を点検できたらまた応用に取り組むということを繰り返すうちに、基礎を見直すことと応用的な取り組みとの間の、自分なりのバランスが出来ていきます。
|
496
496
|
|
497
497
|
|
498
498
|
|
68
テキスト修正
test
CHANGED
@@ -376,7 +376,7 @@
|
|
376
376
|
|
377
377
|
|
378
378
|
|
379
|
-
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべき
|
379
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきと思います。
|
380
380
|
|
381
381
|
|
382
382
|
|
67
テキスト修正
test
CHANGED
@@ -454,7 +454,7 @@
|
|
454
454
|
|
455
455
|
```
|
456
456
|
|
457
|
-
であることは分かっている2つのオブジェクト objectA と objectB とを比較して差分のプロパティだけを持つオブジェクトを返す関数なりメソッドなりを書いてみるのはいかがでしょうか? これをスクラッチから、Lodashのような便利なものを使わずに書いてみるとよいかもしれません。それが
|
457
|
+
であることは分かっている2つのオブジェクト objectA と objectB とを比較して差分のプロパティだけを持つオブジェクトを返す関数なりメソッドなりを書いてみるのはいかがでしょうか? これをスクラッチから、Lodashのような便利なものを使わずに書いてみるとよいかもしれません。それがterataillerさんにとっての(次の一歩となる、)
|
458
458
|
|
459
459
|
|
460
460
|
|
66
テキスト修正
test
CHANGED
@@ -386,7 +386,7 @@
|
|
386
386
|
|
387
387
|
|
388
388
|
|
389
|
-
- Lodash (なり、他の便利な何か)を使
|
389
|
+
- Lodash (なり、他の便利な何か)を採用することにし、それを使うために必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、締め切りに追われがちな限られた開発時間の中で、必要あれば修正も加えて、自分の目の前にある課題解決に使うことができる。
|
390
390
|
|
391
391
|
|
392
392
|
|
65
テキスト修正
test
CHANGED
@@ -368,7 +368,7 @@
|
|
368
368
|
|
369
369
|
|
370
370
|
|
371
|
-
によって、差分のあるプロパティだけを取り出せると
|
371
|
+
によって、差分のあるプロパティだけを取り出せると考えたのでしたら、 厳密な比較演算子`===` についての理解を点検する必要があるのでは? ということです。ですので、
|
372
372
|
|
373
373
|
|
374
374
|
|
64
テキスト修正
test
CHANGED
@@ -454,7 +454,7 @@
|
|
454
454
|
|
455
455
|
```
|
456
456
|
|
457
|
-
であることは分かっている2つのオブジェクト objectA と objectB とを比較して
|
457
|
+
であることは分かっている2つのオブジェクト objectA と objectB とを比較して差分のプロパティだけを持つオブジェクトを返す関数なりメソッドなりを書いてみるのはいかがでしょうか? これをスクラッチから、Lodashのような便利なものを使わずに書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
|
458
458
|
|
459
459
|
|
460
460
|
|
@@ -472,11 +472,11 @@
|
|
472
472
|
|
473
473
|
|
474
474
|
|
475
|
-
と書かれている、誰かが作った中身の分からないものに乗ってしまっていることでのモヤモヤ(これは良いほうのモヤモヤです)を感じることのできるセンスを維持することも大事ですので、そのための練習問題として、(上記の、ある特定の形式のオブジェクトのプロパティ比較と差分オブジェクトの作成が書けた後
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
- [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
475
|
+
と書かれている、誰かが作った中身の分からないものに乗ってしまっていることでのモヤモヤ(これは良いほうのモヤモヤです)を感じることのできるセンスを維持することも大事ですので、そのための練習問題として、(上記の、ある特定の形式のオブジェクトのプロパティ比較と差分オブジェクトの作成が書けた後に、) 一般的なオブジェクトの比較という大きいテーマに、Lodash を使わないで取り組むのもよい修練になると思います。それに取り組むと、おそらく
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
- stackoverflow: [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
480
480
|
|
481
481
|
|
482
482
|
|
63
テキスト修正
test
CHANGED
@@ -96,15 +96,23 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
+
であることが、console.logの出力で確認できます。
|
100
|
+
|
99
|
-
|
101
|
+
これの検証用のサンプルを以下に上げましたので、ご確認ください。
|
100
|
-
|
101
|
-
|
102
|
-
|
102
|
+
|
103
|
+
|
104
|
+
|
103
|
-
- [https://jsfiddle.net/jun68ykt/nhom4uw8/7/](https://jsfiddle.net/jun68ykt/nhom4uw8/7/)
|
105
|
+
- **内容が同じオブジェクトでもうまくいかない例:** [https://jsfiddle.net/jun68ykt/nhom4uw8/7/](https://jsfiddle.net/jun68ykt/nhom4uw8/7/)
|
106
|
+
|
107
|
+
|
108
|
+
|
109
|
+
|
110
|
+
|
104
|
-
|
111
|
+
上記を勘案しまして、オブジェクトの差分を得るのにLodashを使ってみたこと、および
|
105
|
-
|
106
|
-
|
112
|
+
|
107
|
-
|
113
|
+
`_.omitBy(objectB, (v, k) => objectA[k] === v)`
|
114
|
+
|
115
|
+
というコードを拝読して、お伝えしたいこととしては、以下の3点
|
108
116
|
|
109
117
|
|
110
118
|
|
@@ -116,7 +124,7 @@
|
|
116
124
|
|
117
125
|
|
118
126
|
|
119
|
-
です。
|
127
|
+
です。これらについて以下順を追って回答します。
|
120
128
|
|
121
129
|
|
122
130
|
|
@@ -140,7 +148,7 @@
|
|
140
148
|
|
141
149
|
|
142
150
|
|
143
|
-
ともありました。そのような状況の中で Lodashを見つけ出して、それを使ってみようと思い、実際コードを書いてみたというチャレジはとてもよいと思います。ですので、まずは Lodashを使って、主題の「ネストされたオブジェクト間の差分を取得する方法」を探ってみま
|
151
|
+
ともありました。そのような状況の中で Lodashを見つけ出して、それを使ってみようと思い、実際コードを書いてみたというチャレジは**とてもよい**と思います。ですので、まずは Lodashを使って、主題の「ネストされたオブジェクト間の差分を取得する方法」を探ってみましょう。
|
144
152
|
|
145
153
|
|
146
154
|
|
@@ -324,7 +332,7 @@
|
|
324
332
|
|
325
333
|
|
326
334
|
|
327
|
-
の
|
335
|
+
のように、期待どおり空オブジェクトになります。
|
328
336
|
|
329
337
|
|
330
338
|
|
@@ -348,7 +356,7 @@
|
|
348
356
|
|
349
357
|
|
350
358
|
|
351
|
-
あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
359
|
+
二点目としまして、あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
352
360
|
|
353
361
|
|
354
362
|
|
@@ -484,7 +492,7 @@
|
|
484
492
|
|
485
493
|
|
486
494
|
|
487
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような、言わば巷で流行の道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論
|
495
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような、言わば巷で流行の道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論することができ、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、理解不足を感じた基礎項目に立ち返り、基礎を点検できたらまた応用に取り組むということを繰り返すうちに、基礎を見直すことと応用的な取り組みとの間の、自分なりのバランスが出来ていきます。
|
488
496
|
|
489
497
|
|
490
498
|
|
62
テキスト修正
test
CHANGED
@@ -382,11 +382,11 @@
|
|
382
382
|
|
383
383
|
|
384
384
|
|
385
|
-
というのは応用編のスキルであ
|
385
|
+
というのは応用編のスキル、しかもプログラミングの技術力は半分であとの半分は仕事をさばく器用さに近いものですが、それよりも
|
386
|
-
|
387
|
-
|
388
|
-
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
-
- `===` で true になる条件という基礎知識を正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、
|
389
|
+
- `===` で true になる条件という基礎知識を正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、Lodashのような便利グッズを使わず、スクラッチから難なく書ける。
|
390
390
|
|
391
391
|
|
392
392
|
|
@@ -398,7 +398,7 @@
|
|
398
398
|
|
399
399
|
|
400
400
|
|
401
|
-
そこで、以下のページ
|
401
|
+
そこで、以下に挙げたいくつかのページ
|
402
402
|
|
403
403
|
|
404
404
|
|
@@ -484,7 +484,7 @@
|
|
484
484
|
|
485
485
|
|
486
486
|
|
487
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、理解不足を感じた基礎項目に立ち返り、基礎を点検できたらまた応用に取り組むということを繰り返すうちに、基礎を見直すことと応用的な取り組みとの間の、自分なりのバランスが出来ていきます。
|
487
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような、言わば巷で流行の道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、理解不足を感じた基礎項目に立ち返り、基礎を点検できたらまた応用に取り組むということを繰り返すうちに、基礎を見直すことと応用的な取り組みとの間の、自分なりのバランスが出来ていきます。
|
488
488
|
|
489
489
|
|
490
490
|
|
61
テキスト修正
test
CHANGED
@@ -484,7 +484,7 @@
|
|
484
484
|
|
485
485
|
|
486
486
|
|
487
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、基礎に立ち返
|
487
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、理解不足を感じた基礎項目に立ち返り、基礎を点検できたらまた応用に取り組むということを繰り返すうちに、基礎を見直すことと応用的な取り組みとの間の、自分なりのバランスが出来ていきます。
|
488
488
|
|
489
489
|
|
490
490
|
|
60
テキスト修正
test
CHANGED
@@ -104,7 +104,7 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
-
上記の `_.omitBy(objectB, (v, k) => objectA[k] === v)` というコードを拝読して、お伝えしたいこととして
|
107
|
+
上記の `_.omitBy(objectB, (v, k) => objectA[k] === v)` というコードを拝読して、お伝えしたいこととしては以下の3点
|
108
108
|
|
109
109
|
|
110
110
|
|
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
|
119
|
+
です。
|
120
120
|
|
121
121
|
|
122
122
|
|
59
テキスト修正
test
CHANGED
@@ -484,7 +484,7 @@
|
|
484
484
|
|
485
485
|
|
486
486
|
|
487
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。
|
487
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。そのようにして、何か応用的なことをやろうとして、基礎に立ち返るということを繰り返すうちに、基礎を見直すことと応用的なものを使うこととの間の、自分なりのバランスが出来ていきます。
|
488
488
|
|
489
489
|
|
490
490
|
|
58
テキスト修正
test
CHANGED
@@ -484,7 +484,7 @@
|
|
484
484
|
|
485
485
|
|
486
486
|
|
487
|
-
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは
|
487
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは良質なセンスだと思います。それで飛びついてはみたものの、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと納得して結論したうえで、その対策を(通常の業務時間とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。
|
488
488
|
|
489
489
|
|
490
490
|
|
57
テキスト修正
test
CHANGED
@@ -490,4 +490,4 @@
|
|
490
490
|
|
491
491
|
|
492
492
|
|
493
|
-
以上参考になれば幸いです。
|
493
|
+
以上、参考になれば幸いです。
|
56
テキスト修正
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
だと、更新
|
21
|
+
だと、objectB から更新されたプロパティだけを残して他を除去(omit)したオブジェクトを得るという、期待した動作を満たせないのでは?という懸念があります。
|
22
22
|
|
23
23
|
たとえば以下の例
|
24
24
|
|
@@ -104,25 +104,63 @@
|
|
104
104
|
|
105
105
|
|
106
106
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
107
|
+
上記の `_.omitBy(objectB, (v, k) => objectA[k] === v)` というコードを拝読して、お伝えしたいこととして、以下の3点
|
108
|
+
|
109
|
+
|
110
|
+
|
111
|
+
1. Lodashを使った修正案の見つけ方
|
112
|
+
|
113
|
+
2. Lodashを使わずに最小限の要求を満たすものを書いてみる
|
114
|
+
|
115
|
+
3. 基礎を見直すことと応用的なものを使うことのバランスについて
|
116
|
+
|
117
|
+
|
118
|
+
|
119
|
+
を挙げます。
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
+
### 1. Lodashを使った修正案の見つけ方
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
ご質問に
|
128
|
+
|
129
|
+
|
130
|
+
|
131
|
+
> 調べながらなんとかLodashというライブラリを使って
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
とありました。 また、
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
> 周りに相談できる人もいない
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
ともありました。そのような状況の中で Lodashを見つけ出して、それを使ってみようと思い、実際コードを書いてみたというチャレジはとてもよいと思います。ですので、まずは Lodashを使って、主題の「ネストされたオブジェクト間の差分を取得する方法」を探ってみます。
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
ご質問から業務でコードを書いている中での課題と思われますが、仕事の中でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissueに拠り所を求めるパターンが多いです。
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
このご質問の解決策を見つけるときに、Lodashを使うというのは筋として悪くないので、
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
(1) まずは `"lodash difference between two objects"` で[グーグル検索](https://www.google.co.jp/search?q=lodash+ difference +between+two+objects) し、
|
156
|
+
|
157
|
+
|
158
|
+
|
159
|
+
(2) 検索結果で上位に出てきたものをざっと読み、
|
160
|
+
|
161
|
+
|
162
|
+
|
163
|
+
(3) stackoverflowの投稿が出てきたときは、いくつかの回答の中でどれが使えそうか当たりをつけます。
|
126
164
|
|
127
165
|
|
128
166
|
|
@@ -134,7 +172,7 @@
|
|
134
172
|
|
135
173
|
|
136
174
|
|
137
|
-
を拝借するのがよいと思
|
175
|
+
を拝借するのがよいと思えました。
|
138
176
|
|
139
177
|
(ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶのは、個人の判断に委ねられるところなので、別の投稿や回答のほうが使えると判断される方もいらっしゃることでしょう。)
|
140
178
|
|
@@ -276,9 +314,7 @@
|
|
276
314
|
|
277
315
|
|
278
316
|
|
279
|
-
|
280
|
-
|
281
|
-
|
317
|
+
この差分抽出コードだと、objectAとobjectBの内容が同じときは、差分のオブジェクトは以下
|
282
318
|
|
283
319
|
|
284
320
|
|
@@ -304,146 +340,154 @@
|
|
304
340
|
|
305
341
|
|
306
342
|
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
### 2. Lodashを使わずに最小限の要求を満たすものを書いてみる
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
```javascript
|
356
|
+
|
357
|
+
_.omitBy(objectB, (v, k) => objectA[k] === v)
|
358
|
+
|
359
|
+
```
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 厳密な比較演算子`===` についての理解を点検する必要があるのでは? ということです。ですので、
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
368
|
+
|
369
|
+
|
370
|
+
|
371
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきかと思います。
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
言い換えると、
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、ときに締め切りに追われる限られた開発時間の中で、必要あれば修正も加えて自分の課題解決に使うことができる。
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
というのは応用編のスキルであり、それよりも、
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
+
- `===` で true になる条件という基礎知識を正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
というスキルのほうが、獲得すべき順序として優先度が(かなり)高い
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
ということです。
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
そこで、以下のページ
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
- MDN:[比較演算子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
|
406
|
+
|
407
|
+
- [開眼!JavaScript](https://www.amazon.co.jp/dp/487311621X) 1.14節「オブジェクトは同値判定に参照を使用」に掲載の[サンプルコード](http://jsfiddle.net/jseja/4UDYr)
|
408
|
+
|
409
|
+
- [JavaScript 忘れがちな === と == の違い](https://qiita.com/PianoScoreJP/items/e43d70ec188c6fed73ed) (PianoScoreJPさん@Qiita)
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
|
414
|
+
|
415
|
+
で説明している基礎知識を確認するための実践として、オブジェクト一般について比較するコードではなく、ご質問で検討の対象としている、以下の形式
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
```javascript
|
420
|
+
|
421
|
+
{
|
422
|
+
|
423
|
+
id: 整数,
|
424
|
+
|
425
|
+
description: 文字列,
|
426
|
+
|
427
|
+
images: 文字列を要素とする配列,
|
428
|
+
|
429
|
+
metadata: {
|
430
|
+
|
431
|
+
product_id: 整数,
|
432
|
+
|
433
|
+
options: 文字列を要素とする配列
|
434
|
+
|
435
|
+
},
|
436
|
+
|
437
|
+
name: 文字列,
|
438
|
+
|
439
|
+
active: ブール値,
|
440
|
+
|
441
|
+
created: 整数(タイムスタンプ),
|
442
|
+
|
443
|
+
updated: 整数(タイムスタンプ),
|
444
|
+
|
445
|
+
}
|
446
|
+
|
447
|
+
```
|
448
|
+
|
449
|
+
であることは分かっている2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
> ベターな
|
454
|
+
|
455
|
+
|
456
|
+
|
457
|
+
コードになると思いますし、それが書けてからLodashを使った汎用的なコードを採用することにしても遅くはありません。
|
458
|
+
|
459
|
+
また、ご質問にある、
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
> 中身がブラックボックスなので、なんか良くわからないけど出来たという感覚
|
464
|
+
|
465
|
+
|
466
|
+
|
467
|
+
と書かれている、誰かが作った中身の分からないものに乗ってしまっていることでのモヤモヤ(これは良いほうのモヤモヤです)を感じることのできるセンスを維持することも大事ですので、そのための練習問題として、(上記の、ある特定の形式のオブジェクトのプロパティ比較と差分オブジェクトの作成が書けた後で、) 一般的なオブジェクトの比較という大きいテーマに、Lodash を使わないで取り組むのもよい修練になると思います。それに取り組むと、おそらく
|
468
|
+
|
469
|
+
|
470
|
+
|
471
|
+
- [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
472
|
+
|
473
|
+
|
474
|
+
|
475
|
+
についている回答のようなコードを書くことになり、JavaScriptの基礎確認に役立つと思います。
|
476
|
+
|
477
|
+
|
478
|
+
|
479
|
+
### 3. 基礎を見直すことと応用的なものを使うことのバランスについて
|
480
|
+
|
481
|
+
|
482
|
+
|
483
|
+
ここは意見の分かれるところだと思いますが、自分の考えを書いておきます。
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
私は「基礎がしっかり身についてないうちに、誰かが作ってくれた便利なものに頼ろうとしてはいけない」というお説教を言うつもりは全くありません。むしろ逆で、基礎があやふやなうちから Lodash (に限らず JQuery でも、React でもいいのですが。) のような道具に目が行って、それに飛びつくことができるというのは、いいセンスだと思います。ですが、それを使ってみようとしたらうまくいかなくて、どうしてうまくいかないのかと自問自答した結果、「基礎力が足りない」と自分でちゃんと結論したうえで、その対策を(業務とは別の時間を使うことになるかもしれませんが。)さっさと始めることが大事です。
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
|
492
|
+
|
307
493
|
以上参考になれば幸いです。
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
## 補足1
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
回答に書いたような、確度の高い情報に要領よく達することは、業務でプログラムを書くときには大事なこととはいえ、ご質問に
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
と書かれているモヤモヤ(を感じることのできるセンスを維持すること)もまた大事です。
|
326
|
-
|
327
|
-
ですので、一度、ご自身でオブジェクトの内容比較のコードを書いてみるのもよいかもしれません。そうすると、以下の質問
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
- [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
についている回答のようなコードを書くことになり、おそらく JavaScriptの基礎確認に役立つと思います。
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
## 補足2
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
```javascript
|
348
|
-
|
349
|
-
_.omitBy(objectB, (v, k) => objectA[k] === v)
|
350
|
-
|
351
|
-
```
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 厳密な比較演算子`===` についての理解を点検する必要があるのでは? ということです。ですので、
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきかと思います。
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
言い換えると、
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、ときに締め切りに追われる限られた開発時間の中で、必要あれば修正も加えて自分の課題解決に使うことができる。
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
というのは応用編のスキルであり、それよりも、
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
- `===` で true になる条件という基礎知識を正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
というスキルのほうが、獲得すべき順序として優先度が(かなり)高い。
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
ということです。
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
そこで、以下のページ
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
- MDN:[比較演算子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
|
398
|
-
|
399
|
-
- [開眼!JavaScript](https://www.amazon.co.jp/dp/487311621X) 1.14節「オブジェクトは同値判定に参照を使用」に掲載の[サンプルコード](http://jsfiddle.net/jseja/4UDYr)
|
400
|
-
|
401
|
-
- [JavaScript 忘れがちな === と == の違い](https://qiita.com/PianoScoreJP/items/e43d70ec188c6fed73ed) (PianoScoreJPさん@Qiita)
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
で説明している基礎知識を確認するための実践として、オブジェクト一般について比較するコードではなく、ご質問で検討の対象としている、以下の形式
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
```javascript
|
412
|
-
|
413
|
-
{
|
414
|
-
|
415
|
-
id: 整数,
|
416
|
-
|
417
|
-
description: 文字列,
|
418
|
-
|
419
|
-
images: 文字列を要素とする配列,
|
420
|
-
|
421
|
-
metadata: {
|
422
|
-
|
423
|
-
product_id: 整数,
|
424
|
-
|
425
|
-
options: 文字列を要素とする配列
|
426
|
-
|
427
|
-
},
|
428
|
-
|
429
|
-
name: 文字列,
|
430
|
-
|
431
|
-
active: ブール値,
|
432
|
-
|
433
|
-
created: 整数(タイムスタンプ),
|
434
|
-
|
435
|
-
updated: 整数(タイムスタンプ),
|
436
|
-
|
437
|
-
}
|
438
|
-
|
439
|
-
```
|
440
|
-
|
441
|
-
であることは分かっている2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
> ベターな
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
コードになると思いますし、それが書けてからLodashを使った汎用的なコードを採用することにしても遅くはありません。
|
55
テキスト修正
test
CHANGED
@@ -447,17 +447,3 @@
|
|
447
447
|
|
448
448
|
|
449
449
|
コードになると思いますし、それが書けてからLodashを使った汎用的なコードを採用することにしても遅くはありません。
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
## 追伸
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学ぶことができました。ありがとうございます。Lodashは日常的によく使うので、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、次からは「これをLodashで解決する方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索してみると思います。
|
54
テキスト修正
test
CHANGED
@@ -352,11 +352,7 @@
|
|
352
352
|
|
353
353
|
|
354
354
|
|
355
|
-
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 `===`
|
355
|
+
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 厳密な比較演算子`===` についての理解を点検する必要があるのでは? ということです。ですので、
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
ですので、
|
360
356
|
|
361
357
|
|
362
358
|
|
53
テキスト修正
test
CHANGED
@@ -464,4 +464,4 @@
|
|
464
464
|
|
465
465
|
|
466
466
|
|
467
|
-
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学
|
467
|
+
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学ぶことができました。ありがとうございます。Lodashは日常的によく使うので、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、次からは「これをLodashで解決する方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索してみると思います。
|
52
テキスト修正
test
CHANGED
@@ -314,7 +314,7 @@
|
|
314
314
|
|
315
315
|
|
316
316
|
|
317
|
-
回答に書いたような、確度の高い情報に
|
317
|
+
回答に書いたような、確度の高い情報に要領よく達することは、業務でプログラムを書くときには大事なこととはいえ、ご質問に
|
318
318
|
|
319
319
|
|
320
320
|
|
51
テキスト修正
test
CHANGED
@@ -464,4 +464,4 @@
|
|
464
464
|
|
465
465
|
|
466
466
|
|
467
|
-
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解
|
467
|
+
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これをLodashで解決する方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。ありがとうございました。
|
50
テキスト修正
test
CHANGED
@@ -308,11 +308,31 @@
|
|
308
308
|
|
309
309
|
|
310
310
|
|
311
|
+
|
312
|
+
|
311
313
|
## 補足1
|
312
314
|
|
313
315
|
|
314
316
|
|
315
|
-
|
317
|
+
回答に書いたような、確度の高い情報に素早く達することは仕事の上で大事とはいえ、ご質問に
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
と書かれているモヤモヤ(を感じることのできるセンスを維持すること)もまた大事です。
|
326
|
+
|
327
|
+
ですので、一度、ご自身でオブジェクトの内容比較のコードを書いてみるのもよいかもしれません。そうすると、以下の質問
|
328
|
+
|
329
|
+
|
330
|
+
|
331
|
+
- [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
332
|
+
|
333
|
+
|
334
|
+
|
335
|
+
についている回答のようなコードを書くことになり、おそらく JavaScriptの基礎確認に役立つと思います。
|
316
336
|
|
317
337
|
|
318
338
|
|
@@ -320,7 +340,23 @@
|
|
320
340
|
|
321
341
|
|
322
342
|
|
343
|
+
あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
```javascript
|
348
|
+
|
349
|
+
_.omitBy(objectB, (v, k) => objectA[k] === v)
|
350
|
+
|
351
|
+
```
|
352
|
+
|
353
|
+
|
354
|
+
|
355
|
+
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 `===` が true になる条件を再確認する必要があるのでは? ということです。
|
356
|
+
|
357
|
+
|
358
|
+
|
323
|
-
|
359
|
+
ですので、
|
324
360
|
|
325
361
|
|
326
362
|
|
@@ -328,48 +364,6 @@
|
|
328
364
|
|
329
365
|
|
330
366
|
|
331
|
-
と書かれているモヤモヤ(を感じることのできるセンスを維持すること)もまた大事です。
|
332
|
-
|
333
|
-
ですので、一度、ご自身でオブジェクトの内容比較のコードを書いてみるのもよいかもしれません。そうすると、以下の質問
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
- [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
についている回答のようなコードを書くことになり、おそらく JavaScriptの基礎確認に役立つと思います。
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
## 補足3
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
```javascript
|
354
|
-
|
355
|
-
_.omitBy(objectB, (v, k) => objectA[k] === v)
|
356
|
-
|
357
|
-
```
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 `===` が true になる条件を再確認する必要があるのでは? ということです。
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
ですので、
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
370
|
-
|
371
|
-
|
372
|
-
|
373
367
|
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきかと思います。
|
374
368
|
|
375
369
|
|
@@ -400,7 +394,21 @@
|
|
400
394
|
|
401
395
|
|
402
396
|
|
397
|
+
そこで、以下のページ
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
- MDN:[比較演算子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
|
402
|
+
|
403
|
+
- [開眼!JavaScript](https://www.amazon.co.jp/dp/487311621X) 1.14節「オブジェクトは同値判定に参照を使用」に掲載の[サンプルコード](http://jsfiddle.net/jseja/4UDYr)
|
404
|
+
|
405
|
+
- [JavaScript 忘れがちな === と == の違い](https://qiita.com/PianoScoreJP/items/e43d70ec188c6fed73ed) (PianoScoreJPさん@Qiita)
|
406
|
+
|
407
|
+
|
408
|
+
|
409
|
+
|
410
|
+
|
403
|
-
|
411
|
+
で説明している基礎知識を確認するための実践として、オブジェクト一般について比較するコードではなく、ご質問で検討の対象としている、以下の形式
|
404
412
|
|
405
413
|
|
406
414
|
|
@@ -446,12 +454,14 @@
|
|
446
454
|
|
447
455
|
|
448
456
|
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
457
|
+
|
458
|
+
|
459
|
+
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
## 追伸
|
464
|
+
|
465
|
+
|
466
|
+
|
467
|
+
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解く方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。ありがとうございました。
|
49
テキスト修正
test
CHANGED
@@ -434,7 +434,7 @@
|
|
434
434
|
|
435
435
|
```
|
436
436
|
|
437
|
-
である2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずは
|
437
|
+
であることは分かっている2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
|
438
438
|
|
439
439
|
|
440
440
|
|
48
テキスト修正
test
CHANGED
@@ -312,7 +312,7 @@
|
|
312
312
|
|
313
313
|
|
314
314
|
|
315
|
-
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。
|
315
|
+
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解く方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。ありがとうございます。
|
316
316
|
|
317
317
|
|
318
318
|
|
@@ -358,7 +358,11 @@
|
|
358
358
|
|
359
359
|
|
360
360
|
|
361
|
-
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、
|
361
|
+
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 `===` が true になる条件を再確認する必要があるのでは? ということです。
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
ですので、
|
362
366
|
|
363
367
|
|
364
368
|
|
@@ -366,7 +370,9 @@
|
|
366
370
|
|
367
371
|
|
368
372
|
|
369
|
-
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべき
|
373
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきかと思います。
|
374
|
+
|
375
|
+
|
370
376
|
|
371
377
|
|
372
378
|
|
@@ -437,3 +443,15 @@
|
|
437
443
|
|
438
444
|
|
439
445
|
コードになると思いますし、それが書けてからLodashを使った汎用的なコードを採用することにしても遅くはありません。
|
446
|
+
|
447
|
+
|
448
|
+
|
449
|
+
最後に、比較演算子の参考サイトをいくつか挙げておきます。
|
450
|
+
|
451
|
+
|
452
|
+
|
453
|
+
- MDN:[比較演算子](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Comparison_Operators)
|
454
|
+
|
455
|
+
- [開眼!JavaScript](https://www.amazon.co.jp/dp/487311621X) 1.14節「オブジェクトは同値判定に参照を使用」に掲載の[サンプルコード](http://jsfiddle.net/jseja/4UDYr)
|
456
|
+
|
457
|
+
- [JavaScript 忘れがちな === と == の違い](https://qiita.com/PianoScoreJP/items/e43d70ec188c6fed73ed) (PianoScoreJPさん@Qiita)
|
47
テキスト修正
test
CHANGED
@@ -346,7 +346,7 @@
|
|
346
346
|
|
347
347
|
|
348
348
|
|
349
|
-
あらためてterataillerさんのご質問を再読して思うところとしては、
|
349
|
+
あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
|
350
350
|
|
351
351
|
|
352
352
|
|
46
テキスト修正
test
CHANGED
@@ -346,7 +346,7 @@
|
|
346
346
|
|
347
347
|
|
348
348
|
|
349
|
-
あらためてterataillerさんのご質問を再読して思うところとしては、ご質問にあるコード
|
349
|
+
あらためてterataillerさんのご質問を再読して思うところとしては、(老婆心ながら)ご質問にあるコード
|
350
350
|
|
351
351
|
|
352
352
|
|
@@ -358,7 +358,7 @@
|
|
358
358
|
|
359
359
|
|
360
360
|
|
361
|
-
によって、
|
361
|
+
によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 もしかすると、`===` が true になる条件を再確認する必要があるのでは? ということです。ですので、
|
362
362
|
|
363
363
|
|
364
364
|
|
@@ -366,7 +366,7 @@
|
|
366
366
|
|
367
367
|
|
368
368
|
|
369
|
-
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべき
|
369
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきです。
|
370
370
|
|
371
371
|
|
372
372
|
|
@@ -374,7 +374,7 @@
|
|
374
374
|
|
375
375
|
|
376
376
|
|
377
|
-
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、締め切り
|
377
|
+
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、ときに締め切りに追われる限られた開発時間の中で、必要あれば修正も加えて自分の課題解決に使うことができる。
|
378
378
|
|
379
379
|
|
380
380
|
|
45
テキスト修正
test
CHANGED
@@ -382,7 +382,7 @@
|
|
382
382
|
|
383
383
|
|
384
384
|
|
385
|
-
- `===` で true になる条件を
|
385
|
+
- `===` で true になる条件という基礎知識を正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
|
386
386
|
|
387
387
|
|
388
388
|
|
44
テキスト修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。
|
5
|
+
オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。(実際、私も同じ課題に直面したら、まずは、Lodash に便利なメソッドはないか?と探すと思います。)
|
6
6
|
|
7
7
|
|
8
8
|
|
43
テキスト修正
test
CHANGED
@@ -436,4 +436,4 @@
|
|
436
436
|
|
437
437
|
|
438
438
|
|
439
|
-
コードになる
|
439
|
+
コードになると思いますし、それが書けてからLodashを使った汎用的なコードを採用することにしても遅くはありません。
|
42
テキスト修正
test
CHANGED
@@ -106,7 +106,7 @@
|
|
106
106
|
|
107
107
|
|
108
108
|
|
109
|
-
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue
|
109
|
+
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissueに拠り所を求めるパターンが多いです。
|
110
110
|
|
111
111
|
|
112
112
|
|
41
テキスト修正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないのでは?という懸念があります。
|
22
22
|
|
23
|
-
たとえば以下の
|
23
|
+
たとえば以下の例
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
では、 `objectA` と `objectB` とは内容が同じなので、更新のあったプロパティを持つオブジェクトとしては
|
75
|
+
では、 `objectA` と `objectB` とは内容が同じなので、更新のあったプロパティを持つオブジェクトとしては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクトは、以下
|
76
76
|
|
77
77
|
|
78
78
|
|
@@ -374,7 +374,7 @@
|
|
374
374
|
|
375
375
|
|
376
376
|
|
377
|
-
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、
|
377
|
+
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、締め切りのある開発時間の中で必要な修正も加えて自分の課題解決に使うことができる。
|
378
378
|
|
379
379
|
|
380
380
|
|
40
テキスト修正
test
CHANGED
@@ -346,7 +346,7 @@
|
|
346
346
|
|
347
347
|
|
348
348
|
|
349
|
-
あらためてterataillerさんのご質問を再読して思うところとしては、
|
349
|
+
あらためてterataillerさんのご質問を再読して思うところとしては、ご質問にあるコード
|
350
350
|
|
351
351
|
|
352
352
|
|
@@ -358,7 +358,7 @@
|
|
358
358
|
|
359
359
|
|
360
360
|
|
361
|
-
によって、(内容に)差分のあるプロパティだけを取り出せるとお考え
|
361
|
+
によって、(内容に)差分のあるプロパティだけを取り出せるとお考えでしたら、 もしかすると、`===` が true になる条件を再確認する必要があるのでは? ということです。ですので、
|
362
362
|
|
363
363
|
|
364
364
|
|
39
テキスト修正
test
CHANGED
@@ -374,7 +374,7 @@
|
|
374
374
|
|
375
375
|
|
376
376
|
|
377
|
-
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもし、「オブジェクト一般の差分
|
377
|
+
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、限られた開発時間の中で必要な修正も加えて自分の課題解決に使うことができる。
|
378
378
|
|
379
379
|
|
380
380
|
|
38
テキスト修正
test
CHANGED
@@ -358,7 +358,7 @@
|
|
358
358
|
|
359
359
|
|
360
360
|
|
361
|
-
によって、(内容に)差分のあるプロパティだけを取り出せるとお考えになってしまったのでしたら、 `===` が true になる条件を再確認する必要がある
|
361
|
+
によって、(内容に)差分のあるプロパティだけを取り出せるとお考えになってしまったのでしたら、 `===` が true になる条件を再確認する必要があるのでは? ということです。ですので、
|
362
362
|
|
363
363
|
|
364
364
|
|
@@ -366,7 +366,7 @@
|
|
366
366
|
|
367
367
|
|
368
368
|
|
369
|
-
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきところです。
|
369
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきところです。
|
370
370
|
|
371
371
|
|
372
372
|
|
37
テキスト修正
test
CHANGED
@@ -374,7 +374,7 @@
|
|
374
374
|
|
375
375
|
|
376
376
|
|
377
|
-
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台
|
377
|
+
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもし、「オブジェクト一般の差分を取得する」というような、(いわば)大きなテーマのコードを持ってきて、必要なら修正も加えたうえ自分の課題解決に使うことができる。
|
378
378
|
|
379
379
|
|
380
380
|
|
36
テキスト修正
test
CHANGED
@@ -378,7 +378,7 @@
|
|
378
378
|
|
379
379
|
|
380
380
|
|
381
|
-
というのは応用編のスキルであり、それよりも、
|
381
|
+
というのは応用編のスキルであり、それよりも、
|
382
382
|
|
383
383
|
|
384
384
|
|
@@ -386,7 +386,11 @@
|
|
386
386
|
|
387
387
|
|
388
388
|
|
389
|
-
というスキルのほうが、獲得すべき順序として優先度が(かなり)高い
|
389
|
+
というスキルのほうが、獲得すべき順序として優先度が(かなり)高い。
|
390
|
+
|
391
|
+
|
392
|
+
|
393
|
+
ということです。
|
390
394
|
|
391
395
|
|
392
396
|
|
35
テキスト修正
test
CHANGED
@@ -20,7 +20,7 @@
|
|
20
20
|
|
21
21
|
だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないのでは?という懸念があります。
|
22
22
|
|
23
|
-
|
23
|
+
たとえば以下のコード
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -72,7 +72,7 @@
|
|
72
72
|
|
73
73
|
|
74
74
|
|
75
|
-
では、 `objectA` と `objectB` とは内容が同じなので、
|
75
|
+
では、 `objectA` と `objectB` とは内容が同じなので、更新のあったプロパティを持つオブジェクトとしては、空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクトは、以下
|
76
76
|
|
77
77
|
|
78
78
|
|
34
テキスト修正
test
CHANGED
@@ -382,7 +382,7 @@
|
|
382
382
|
|
383
383
|
|
384
384
|
|
385
|
-
- `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある、特定の形式のオブジェクトを比較するコードを難なく書ける。
|
385
|
+
- `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある、特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
|
386
386
|
|
387
387
|
|
388
388
|
|
33
テキスト修正
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないです。
|
21
|
+
だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないのでは?という懸念があります。
|
22
22
|
|
23
23
|
簡単な例だと、たとえば以下のコード
|
24
24
|
|
32
テキスト修正
test
CHANGED
@@ -424,7 +424,7 @@
|
|
424
424
|
|
425
425
|
```
|
426
426
|
|
427
|
-
である2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずは次の一歩となる、
|
427
|
+
である2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずは次の一歩となる、terataillerさんにとっての
|
428
428
|
|
429
429
|
|
430
430
|
|
31
テキスト修正
test
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
|
5
|
+
オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
-
ただ、ご質問に挙げられている
|
9
|
+
ただし、ご質問に挙げられている
|
10
10
|
|
11
11
|
|
12
12
|
|
@@ -18,9 +18,9 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
|
21
|
+
だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないです。
|
22
|
-
|
22
|
+
|
23
|
-
たとえば以下のコード
|
23
|
+
簡単な例だと、たとえば以下のコード
|
24
24
|
|
25
25
|
|
26
26
|
|
@@ -96,7 +96,7 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
であることが、console.logの出力で確認でき
|
99
|
+
であることが、console.logの出力で確認できます。これの検証用のサンプルを以下に上げましたので、ご確認ください。
|
100
100
|
|
101
101
|
|
102
102
|
|
30
テキスト修正
test
CHANGED
@@ -424,7 +424,7 @@
|
|
424
424
|
|
425
425
|
```
|
426
426
|
|
427
|
-
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それがまずは次の一歩となる、
|
427
|
+
である2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずは次の一歩となる、
|
428
428
|
|
429
429
|
|
430
430
|
|
29
テキスト修正
test
CHANGED
@@ -424,4 +424,12 @@
|
|
424
424
|
|
425
425
|
```
|
426
426
|
|
427
|
-
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それが
|
427
|
+
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それがまずは次の一歩となる、
|
428
|
+
|
429
|
+
|
430
|
+
|
431
|
+
> ベターな
|
432
|
+
|
433
|
+
|
434
|
+
|
435
|
+
コードになるのではと思った次第です。
|
28
テキスト修正
test
CHANGED
@@ -382,7 +382,7 @@
|
|
382
382
|
|
383
383
|
|
384
384
|
|
385
|
-
- `===` で true になる条件を間違えないで、自分の検討
|
385
|
+
- `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある、特定の形式のオブジェクトを比較するコードを難なく書ける。
|
386
386
|
|
387
387
|
|
388
388
|
|
27
テキスト修正
test
CHANGED
@@ -424,4 +424,4 @@
|
|
424
424
|
|
425
425
|
```
|
426
426
|
|
427
|
-
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それが、まずは次の一歩となるベターなコードになるのではと
|
427
|
+
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それが、まずは次の一歩となるベターなコードになるのではと思いました。
|
26
テキスト修正
test
CHANGED
@@ -366,7 +366,9 @@
|
|
366
366
|
|
367
367
|
|
368
368
|
|
369
|
-
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。
|
369
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきところです。
|
370
|
+
|
371
|
+
|
370
372
|
|
371
373
|
言い換えると、
|
372
374
|
|
@@ -422,4 +424,4 @@
|
|
422
424
|
|
423
425
|
```
|
424
426
|
|
425
|
-
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。
|
427
|
+
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それが、まずは次の一歩となるベターなコードになるのではと考えた次第です。
|
25
テキスト修正
test
CHANGED
@@ -368,7 +368,27 @@
|
|
368
368
|
|
369
369
|
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。
|
370
370
|
|
371
|
+
言い換えると、
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
- Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台にして、オブジェクト一般の差分を取得する(という、わりと大きいテーマの)コードを書ける。
|
376
|
+
|
377
|
+
|
378
|
+
|
379
|
+
というのは応用編のスキルであり、それよりも、
|
380
|
+
|
381
|
+
|
382
|
+
|
383
|
+
- `===` で true になる条件を間違えないで、自分の検討の対象内にある特定の形式のオブジェクトを比較するコードを難なく書ける。
|
384
|
+
|
385
|
+
|
386
|
+
|
387
|
+
というスキルのほうが、獲得すべき順序として優先度が(かなり)高いです。
|
388
|
+
|
389
|
+
|
390
|
+
|
371
|
-
で
|
391
|
+
そこで、上記を確認するための実践として、オブジェクト一般について比較するコードではなく、ご質問で検討の対象としている、以下の形式
|
372
392
|
|
373
393
|
|
374
394
|
|
24
テキスト修正
test
CHANGED
@@ -308,11 +308,7 @@
|
|
308
308
|
|
309
309
|
|
310
310
|
|
311
|
-
---
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
311
|
+
## 補足1
|
316
312
|
|
317
313
|
|
318
314
|
|
@@ -320,11 +316,7 @@
|
|
320
316
|
|
321
317
|
|
322
318
|
|
323
|
-
---
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
319
|
+
## 補足2
|
328
320
|
|
329
321
|
|
330
322
|
|
@@ -347,3 +339,67 @@
|
|
347
339
|
|
348
340
|
|
349
341
|
についている回答のようなコードを書くことになり、おそらく JavaScriptの基礎確認に役立つと思います。
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
## 補足3
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
あらためてterataillerさんのご質問を再読して思うところとしては、
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
```javascript
|
354
|
+
|
355
|
+
_.omitBy(objectB, (v, k) => objectA[k] === v)
|
356
|
+
|
357
|
+
```
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
によって、(内容に)差分のあるプロパティだけを取り出せるとお考えになってしまったのでしたら、 `===` が true になる条件を再確認する必要がある、ということです。ですので、
|
362
|
+
|
363
|
+
|
364
|
+
|
365
|
+
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
366
|
+
|
367
|
+
|
368
|
+
|
369
|
+
のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。
|
370
|
+
|
371
|
+
ですので、上記を確認するための実践として、オブジェクト一般について比較するコードではなく、ご質問で検討の対象としている、以下の形式
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
```javascript
|
376
|
+
|
377
|
+
{
|
378
|
+
|
379
|
+
id: 整数,
|
380
|
+
|
381
|
+
description: 文字列,
|
382
|
+
|
383
|
+
images: 文字列を要素とする配列,
|
384
|
+
|
385
|
+
metadata: {
|
386
|
+
|
387
|
+
product_id: 整数,
|
388
|
+
|
389
|
+
options: 文字列を要素とする配列
|
390
|
+
|
391
|
+
},
|
392
|
+
|
393
|
+
name: 文字列,
|
394
|
+
|
395
|
+
active: ブール値,
|
396
|
+
|
397
|
+
created: 整数(タイムスタンプ),
|
398
|
+
|
399
|
+
updated: 整数(タイムスタンプ),
|
400
|
+
|
401
|
+
}
|
402
|
+
|
403
|
+
```
|
404
|
+
|
405
|
+
である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。
|
23
テキスト修正
test
CHANGED
@@ -96,7 +96,7 @@
|
|
96
96
|
|
97
97
|
|
98
98
|
|
99
|
-
|
99
|
+
であることが、console.logの出力で確認できると思います。これの検証用のサンプルを以下に上げましたので、ご確認ください。
|
100
100
|
|
101
101
|
|
102
102
|
|
22
テキスト修正
test
CHANGED
@@ -336,7 +336,7 @@
|
|
336
336
|
|
337
337
|
|
338
338
|
|
339
|
-
と書かれているモヤモヤ
|
339
|
+
と書かれているモヤモヤ(を感じることのできるセンスを維持すること)もまた大事です。
|
340
340
|
|
341
341
|
ですので、一度、ご自身でオブジェクトの内容比較のコードを書いてみるのもよいかもしれません。そうすると、以下の質問
|
342
342
|
|
21
テキスト修正
test
CHANGED
@@ -18,9 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
では、差分だけを正しく抽出
|
21
|
+
では、差分だけを正しく抽出できず、期待した動作をしてくれない場合があります。
|
22
|
-
|
23
|
-
|
24
22
|
|
25
23
|
たとえば以下のコード
|
26
24
|
|
@@ -74,7 +72,7 @@
|
|
74
72
|
|
75
73
|
|
76
74
|
|
77
|
-
では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images`
|
75
|
+
では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクトは、以下
|
78
76
|
|
79
77
|
|
80
78
|
|
@@ -98,7 +96,7 @@
|
|
98
96
|
|
99
97
|
|
100
98
|
|
101
|
-
|
99
|
+
のようにconsole.logで表示されることでしょう。上記の検証用のサンプルを以下に上げましたので、ご確認ください。
|
102
100
|
|
103
101
|
|
104
102
|
|
20
テキスト修正
test
CHANGED
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
-
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに私の場合、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue頼みというパターンが多いです。
|
111
|
+
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue頼みというパターンが多いです。
|
112
112
|
|
113
113
|
|
114
114
|
|
@@ -138,7 +138,7 @@
|
|
138
138
|
|
139
139
|
を拝借するのがよいと思いました。
|
140
140
|
|
141
|
-
(
|
141
|
+
(ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶのは、個人の判断に委ねられるところなので、別の投稿や回答のほうが使えると判断される方もいらっしゃることでしょう。)
|
142
142
|
|
143
143
|
|
144
144
|
|
19
テキスト修正
test
CHANGED
@@ -314,8 +314,38 @@
|
|
314
314
|
|
315
315
|
|
316
316
|
|
317
|
-
補足
|
317
|
+
**補足1**
|
318
318
|
|
319
319
|
|
320
320
|
|
321
321
|
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ありがとうございます。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解く方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。
|
322
|
+
|
323
|
+
|
324
|
+
|
325
|
+
---
|
326
|
+
|
327
|
+
|
328
|
+
|
329
|
+
**補足2**
|
330
|
+
|
331
|
+
|
332
|
+
|
333
|
+
とはいえ、ご質問に
|
334
|
+
|
335
|
+
|
336
|
+
|
337
|
+
> 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
|
338
|
+
|
339
|
+
|
340
|
+
|
341
|
+
と書かれているモヤモヤ感(を感じることのできるセンスを維持すること)もまた大事です。
|
342
|
+
|
343
|
+
ですので、一度、ご自身でオブジェクトの内容比較のコードを書いてみるのもよいかもしれません。そうすると、以下の質問
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
- [Generic deep diff between two objects](https://stackoverflow.com/questions/8572826/generic-deep-diff-between-two-objects)
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
についている回答のようなコードを書くことになり、おそらく JavaScriptの基礎確認に役立つと思います。
|
18
テキスト修正
test
CHANGED
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
-
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに私の場合、まずは適切な英文でググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue頼みというパターンが多いです。
|
111
|
+
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに私の場合、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue頼みというパターンが多いです。
|
112
112
|
|
113
113
|
|
114
114
|
|
17
テキスト修正
test
CHANGED
@@ -102,7 +102,7 @@
|
|
102
102
|
|
103
103
|
|
104
104
|
|
105
|
-
- [https://jsfiddle.net/jun68ykt/nhom4uw8/
|
105
|
+
- [https://jsfiddle.net/jun68ykt/nhom4uw8/7/](https://jsfiddle.net/jun68ykt/nhom4uw8/7/)
|
106
106
|
|
107
107
|
|
108
108
|
|
@@ -274,7 +274,7 @@
|
|
274
274
|
|
275
275
|
|
276
276
|
|
277
|
-
- [https://jsfiddle.net/jun68ykt/g0zctujb/1
|
277
|
+
- [https://jsfiddle.net/jun68ykt/g0zctujb/14/](https://jsfiddle.net/jun68ykt/g0zctujb/14/)
|
278
278
|
|
279
279
|
|
280
280
|
|
@@ -284,7 +284,7 @@
|
|
284
284
|
|
285
285
|
|
286
286
|
|
287
|
-
- [https://jsfiddle.net/jun68ykt/Lpwe0952/
|
287
|
+
- [https://jsfiddle.net/jun68ykt/Lpwe0952/3/](https://jsfiddle.net/jun68ykt/Lpwe0952/3/)
|
288
288
|
|
289
289
|
|
290
290
|
|
16
テキスト修正
test
CHANGED
@@ -138,7 +138,7 @@
|
|
138
138
|
|
139
139
|
を拝借するのがよいと思いました。
|
140
140
|
|
141
|
-
(※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶ
|
141
|
+
(※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶのは、個人の判断に委ねられるところなので、別の投稿や回答のほうが使えると判断される方もいらっしゃることでしょう。)
|
142
142
|
|
143
143
|
|
144
144
|
|
15
テキスト修正
test
CHANGED
@@ -307,3 +307,15 @@
|
|
307
307
|
|
308
308
|
|
309
309
|
以上参考になれば幸いです。
|
310
|
+
|
311
|
+
|
312
|
+
|
313
|
+
---
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
補足
|
318
|
+
|
319
|
+
|
320
|
+
|
321
|
+
今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ありがとうございます。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解く方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。
|
14
テキスト修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
まず、オブジェクトや配列に対してちょっと込み入った操作をする
|
5
|
+
まず、オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違ってないと思います。
|
6
6
|
|
7
7
|
|
8
8
|
|
13
テキスト修正
test
CHANGED
@@ -246,7 +246,7 @@
|
|
246
246
|
|
247
247
|
|
248
248
|
|
249
|
-
// 更新されたプロパティのobjectBでの値
|
249
|
+
// 値が更新されたプロパティと、それらのobjectBでの値を持つオブジェクトを作成
|
250
250
|
|
251
251
|
const diffObj = diffProps.reduce((obj, prop) => {
|
252
252
|
|
@@ -274,7 +274,7 @@
|
|
274
274
|
|
275
275
|
|
276
276
|
|
277
|
-
- [https://jsfiddle.net/jun68ykt/g0zctujb/1
|
277
|
+
- [https://jsfiddle.net/jun68ykt/g0zctujb/12/](https://jsfiddle.net/jun68ykt/g0zctujb/12/)
|
278
278
|
|
279
279
|
|
280
280
|
|
12
テキスト修正
test
CHANGED
File without changes
|
11
テキスト修正
test
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
-
では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` プロパティが等しくないプロパティとしてピックアップされて、
|
77
|
+
では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` プロパティが等しくないプロパティとしてピックアップされて、`_.omitBy`の返すオブジェクトとして、以下
|
78
78
|
|
79
79
|
|
80
80
|
|
@@ -98,7 +98,7 @@
|
|
98
98
|
|
99
99
|
|
100
100
|
|
101
|
-
上記の検証用のサンプルを以下に上げましたので、ご確認ください。
|
101
|
+
が console に表示されることでしょう。上記の検証用のサンプルを以下に上げましたので、ご確認ください。
|
102
102
|
|
103
103
|
|
104
104
|
|
@@ -128,7 +128,7 @@
|
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
(4) 今回のご質問の場合、 [Adam Boduch](https://www.amazon.com/Adam-Boduch/e/B005K03U8O) さんによる回答:
|
131
|
+
(4) 今回のご質問の場合、[Lo-Dash Essentials](https://www.amazon.com/gp/product/B00SVBFBK4/) という著書も書いている、 [Adam Boduch](https://www.amazon.com/Adam-Boduch/e/B005K03U8O) さんによる回答:
|
132
132
|
|
133
133
|
- [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152)
|
134
134
|
|
10
テキスト修正
test
CHANGED
@@ -246,7 +246,7 @@
|
|
246
246
|
|
247
247
|
|
248
248
|
|
249
|
-
// 更新されたプロパティの値のみを持つオブジェクトを作成
|
249
|
+
// 更新されたプロパティのobjectBでの値のみを持つオブジェクトを作成
|
250
250
|
|
251
251
|
const diffObj = diffProps.reduce((obj, prop) => {
|
252
252
|
|
@@ -274,7 +274,7 @@
|
|
274
274
|
|
275
275
|
|
276
276
|
|
277
|
-
- [https://jsfiddle.net/jun68ykt/g0zctujb/1
|
277
|
+
- [https://jsfiddle.net/jun68ykt/g0zctujb/11/](https://jsfiddle.net/jun68ykt/g0zctujb/11/)
|
278
278
|
|
279
279
|
|
280
280
|
|
9
テキスト修正
test
CHANGED
@@ -128,7 +128,15 @@
|
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
+
(4) 今回のご質問の場合、 [Adam Boduch](https://www.amazon.com/Adam-Boduch/e/B005K03U8O) さんによる回答:
|
132
|
+
|
131
|
-
|
133
|
+
- [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152)
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
|
139
|
+
を拝借するのがよいと思いました。
|
132
140
|
|
133
141
|
(※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶところは、個人の判断に委ねられるところなので、別の投稿のほうが使えると判断される方もいらっしゃることでしょう。)
|
134
142
|
|
8
テキスト修正
test
CHANGED
@@ -108,7 +108,7 @@
|
|
108
108
|
|
109
109
|
|
110
110
|
|
111
|
-
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに私の場合、まずは適切な英文でググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue頼みというパターンが多いです。
|
111
|
+
そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに私の場合、まずは適切な英文でググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissue頼みというパターンが多いです。
|
112
112
|
|
113
113
|
|
114
114
|
|
@@ -290,7 +290,11 @@
|
|
290
290
|
|
291
291
|
|
292
292
|
|
293
|
-
先ほど、
|
293
|
+
先ほど、
|
294
|
+
|
295
|
+
「業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。」
|
296
|
+
|
297
|
+
と書きました。その観点でいうと、(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルにヒットしそうな検索ワードをあれこれと試します。
|
294
298
|
|
295
299
|
|
296
300
|
|
7
テキスト修正
test
CHANGED
@@ -128,7 +128,7 @@
|
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
(4) 今回のご質問の場合、 [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) を
|
131
|
+
(4) 今回のご質問の場合、 [Adam Boduch](https://www.amazon.com/Adam-Boduch/e/B005K03U8O) さんによる回答: [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) を拝借するのがよいと思いました。
|
132
132
|
|
133
133
|
(※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶところは、個人の判断に委ねられるところなので、別の投稿のほうが使えると判断される方もいらっしゃることでしょう。)
|
134
134
|
|
6
テキスト修正
test
CHANGED
@@ -290,7 +290,7 @@
|
|
290
290
|
|
291
291
|
|
292
292
|
|
293
|
-
先に書い
|
293
|
+
先ほど、「業務上でこの種の問題に遭遇した場合、すでに誰かが作ってくれた、より確からしい実装に早くたどりつく必要があります」と書きましたが、その観点でいうと、(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルにヒットしそうな検索ワードをあれこれと試します。
|
294
294
|
|
295
295
|
|
296
296
|
|
5
テキスト修正
test
CHANGED
@@ -74,7 +74,7 @@
|
|
74
74
|
|
75
75
|
|
76
76
|
|
77
|
-
では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記
|
77
|
+
では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` プロパティが等しくないプロパティとしてピックアップされて、以下が console に表示されることでしょう。
|
78
78
|
|
79
79
|
|
80
80
|
|
4
テキスト修正
test
CHANGED
@@ -128,7 +128,9 @@
|
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
(4) 今回のご質問の場合、 [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) を使うのが課題解決につながると思いました。
|
131
|
+
(4) 今回のご質問の場合、 [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) を使うのが課題解決につながると思いました。
|
132
|
+
|
133
|
+
(※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶところは、個人の判断に委ねられるところなので、別の投稿のほうが使えると判断される方もいらっしゃることでしょう。)
|
132
134
|
|
133
135
|
|
134
136
|
|
3
テキスト修正
test
CHANGED
@@ -116,19 +116,19 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
(1) まずは `"lodash d
|
119
|
+
(1) まずは `"lodash difference between two objects"` で[グーグル検索](https://www.google.co.jp/search?q=lodash+ difference +between+two+objects)
|
120
|
-
|
121
|
-
|
122
|
-
|
120
|
+
|
121
|
+
|
122
|
+
|
123
|
-
(2) 検索結果で出てきた
|
123
|
+
(2) 検索結果で上位に出てきたものをざっと読む。
|
124
|
-
|
125
|
-
|
126
|
-
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
-
(3) いくつかの回答の中でどれが使えそうか当たりをつける。
|
127
|
+
(3) stackoverflowの投稿が出てきたときは、いくつかの回答の中でどれが使えそうか当たりをつける。
|
128
128
|
|
129
129
|
|
130
130
|
|
131
|
-
(4) 今回のご質問の場合、 [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) が使え
|
131
|
+
(4) 今回のご質問の場合、 [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) を使うのが課題解決につながると思いました。(※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶところは、個人の判断に委ねられるところなので、別の回答のほうが使えると判断される方もいることでしょう。)
|
132
132
|
|
133
133
|
|
134
134
|
|
@@ -288,7 +288,7 @@
|
|
288
288
|
|
289
289
|
|
290
290
|
|
291
|
-
先に書いた(1)から(4)のステップで大事なのは、 (1)
|
291
|
+
先に書いた(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルになっていそうなものを考えます。
|
292
292
|
|
293
293
|
|
294
294
|
|
2
テキスト修正
test
CHANGED
@@ -116,7 +116,7 @@
|
|
116
116
|
|
117
117
|
|
118
118
|
|
119
|
-
(1) まずは `"lodash defference betwen
|
119
|
+
(1) まずは `"lodash defference between two objects"` で[グーグル検索](https://www.google.co.jp/search?q=lodash+defference+between+two+objects)
|
120
120
|
|
121
121
|
|
122
122
|
|
1
テキスト修正
test
CHANGED
@@ -112,7 +112,7 @@
|
|
112
112
|
|
113
113
|
|
114
114
|
|
115
|
-
この問
|
115
|
+
このご質問の解決策を見つけるときは、lodashを使うというのは筋として悪くないと思うので、
|
116
116
|
|
117
117
|
|
118
118
|
|