回答編集履歴

75

テキスト修正

2018/10/10 02:59

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/10 02:59

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -372,7 +372,7 @@
372
372
 
373
373
 
374
374
 
375
- > 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
375
+ > 中身がブラックボックなので、なんか良くわからないけど出来たという感覚
376
376
 
377
377
 
378
378
 

73

テキスト修正

2018/10/08 14:18

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 14:16

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。実際、私も同じ課題に直面したら、まずは、Lodash に便利なメソッドはないか?と探すと思います。
5
+ オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。実際、私も同じ課題に直面したら、まずは、Lodash に便利なメソッドはないか?と探すと思います。
6
6
 
7
7
 
8
8
 

71

テキスト修正

2018/10/08 14:03

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 13:42

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 08:10

投稿

jun68ykt
jun68ykt

スコア9058

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
 

68

テキスト修正

2018/10/08 07:59

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -376,7 +376,7 @@
376
376
 
377
377
 
378
378
 
379
- のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきと思います。
379
+ のモヤモヤの原因の一端は、`===` が true になる条件の理解不足にあるかもしれません。モヤモヤにも良いモヤモヤと悪いモヤモヤとがあって、 `===`の理解不足によるモヤモヤは悪いモヤモヤなので、すぐに解消すべきと思います。
380
380
 
381
381
 
382
382
 

67

テキスト修正

2018/10/08 07:53

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -454,7 +454,7 @@
454
454
 
455
455
  ```
456
456
 
457
- であることは分かっている2つのオブジェクト objectA と objectB とを比較して差分のプロパティだけを持つオブジェクトを返す関数なりメソッドなりを書いてみるのはいかがでしょうか? これをスクラッチから、Lodashのような便利なものを使わずに書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
457
+ であることは分かっている2つのオブジェクト objectA と objectB とを比較して差分のプロパティだけを持つオブジェクトを返す関数なりメソッドなりを書いてみるのはいかがでしょうか? これをスクラッチから、Lodashのような便利なものを使わずに書いてみるとよいかもしれません。それがterataillerさんにとっての(次の一歩となる、)
458
458
 
459
459
 
460
460
 

66

テキスト修正

2018/10/08 06:36

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -386,7 +386,7 @@
386
386
 
387
387
 
388
388
 
389
- - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、ときに締め切りに追われ限られた開発時間の中で、必要あれば修正も加えて自分の課題解決に使うことができる。
389
+ - Lodash (なり、他の便利な何か)を採用することにし、それを使うために必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、締め切りに追われがちな限られた開発時間の中で、必要あれば修正も加えて自分の目の前にある課題解決に使うことができる。
390
390
 
391
391
 
392
392
 

65

テキスト修正

2018/10/08 06:32

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -368,7 +368,7 @@
368
368
 
369
369
 
370
370
 
371
- によって、差分のあるプロパティだけを取り出せると考えでしたら、 厳密な比較演算子`===` についての理解を点検する必要があるのでは? ということです。ですので、
371
+ によって、差分のあるプロパティだけを取り出せると考えたのでしたら、 厳密な比較演算子`===` についての理解を点検する必要があるのでは? ということです。ですので、
372
372
 
373
373
 
374
374
 

64

テキスト修正

2018/10/08 06:27

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -454,7 +454,7 @@
454
454
 
455
455
  ```
456
456
 
457
- であることは分かっている2つのオブジェクト objectA と objectB とを比較して、objectBほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
457
+ であることは分かっている2つのオブジェクト objectA と objectB とを比較して差分のプロパティだけを持つオブジェクトを返す関数なりメソッドなりを書いてみるのはいかがでしょうか? これスクラッチから、Lodashのような便利なものを使わずに書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
458
458
 
459
459
 
460
460
 
@@ -472,11 +472,11 @@
472
472
 
473
473
 
474
474
 
475
- と書かれている、誰かが作った中身の分からないものに乗ってしまっていることでのモヤモヤ(これは良いほうのモヤモヤです)を感じることのできるセンスを維持することも大事ですので、そのための練習問題として、(上記の、ある特定の形式のオブジェクトのプロパティ比較と差分オブジェクトの作成が書けた後、) 一般的なオブジェクトの比較という大きいテーマに、Lodash を使わないで取り組むのもよい修練になると思います。それに取り組むと、おそらく
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

テキスト修正

2018/10/08 05:49

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -96,15 +96,23 @@
96
96
 
97
97
 
98
98
 
99
+ であることが、console.logの出力で確認できます。
100
+
99
- であるとが、console.logの出力で確認できます。これの検証用のサンプルを以下に上げましたので、ご確認ください。
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
- 上記の `_.omitBy(objectB, (v, k) => objectA[k] === v)` というコードを拝読して、お伝えしたいこととしては以下の3点
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

テキスト修正

2018/10/08 05:33

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -382,11 +382,11 @@
382
382
 
383
383
 
384
384
 
385
-   というのは応用編のスキルであ、それよりも
385
+   というのは応用編のスキル、しかもプログラミングの技術力は半分であとの半分は仕事をさばく器用さに近いものですが、それよりも
386
-
387
-
388
-
386
+
387
+
388
+
389
- - `===` で true になる条件という基礎知識を正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、Lodashのような便利グッズを使わず、スクラッチから難なく書ける。
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

テキスト修正

2018/10/08 05:21

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 05:15

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -104,7 +104,7 @@
104
104
 
105
105
 
106
106
 
107
- 上記の `_.omitBy(objectB, (v, k) => objectA[k] === v)` というコードを拝読して、お伝えしたいこととして以下の3点
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

テキスト修正

2018/10/08 05:11

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 04:43

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 04:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -490,4 +490,4 @@
490
490
 
491
491
    
492
492
 
493
- 以上参考になれば幸いです。
493
+ 以上参考になれば幸いです。

56

テキスト修正

2018/10/08 04:17

投稿

jun68ykt
jun68ykt

スコア9058

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
- そこでどうするかですが、プログラミングの勉強としてならば、オブジェクトの内容を比較するコードを(再帰を使ってみるなどしながら)スクラッチから書くのもよいと思いますが、業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。そういうときに、あくまで私の場合は、という限られた話にはなりますが、まずは適切な**(日本語を含まない)英文で**ググってからの stackoverflow または、使うモジュールの発信元であるGitHubレポジトリのissueに拠り所を求めるパターンが多いです。
110
-
111
-
112
-
113
- このご質問の解決策を見つけるときは、lodashを使うとうのは筋とし悪くないと思うので、
114
-
115
-
116
-
117
- (1) まずは `"lodash difference between two objects"` で[グーグル検索](https://www.google.co.jp/search?q=lodash+ difference +between+two+objects)
118
-
119
-
120
-
121
- (2) 検索結果で上位に出てきたものをざっと読む。
122
-
123
-
124
-
125
- (3) stackoverflowの投稿が出てきたときは、いくつかの回答の中でどれが使えそうか当たりをつける。
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
- また、上記で使っている差分抽出コードだと、objectAとobjectBの内容が同じときは、差分のオブジェクトは以下
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

テキスト修正

2018/10/08 04:09

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/08 02:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -352,11 +352,7 @@
352
352
 
353
353
 
354
354
 
355
- によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 `===` が true なる条件再確認する必要があるのでは? ということです。
355
+ によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 厳密な比較演算子`===` についての理解点検する必要があるのでは? ということです。ですので、
356
-
357
-
358
-
359
- ですので、
360
356
 
361
357
 
362
358
 

53

テキスト修正

2018/10/07 22:44

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -464,4 +464,4 @@
464
464
 
465
465
 
466
466
 
467
- 今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学ました。すので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これをLodashで解決する方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索ると思います。このようにして検索の確度を高めていくことができます。ありがとうございました。
467
+ 今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学ぶことができました。ありがとうございま。Lodashは日常的によく使うので、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、次からは「これをLodashで解決する方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索してみると思います。

52

テキスト修正

2018/10/07 22:40

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -314,7 +314,7 @@
314
314
 
315
315
 
316
316
 
317
- 回答に書いたような、確度の高い情報に素早く達することは仕事の上で大事とはいえ、ご質問に
317
+ 回答に書いたような、確度の高い情報に要領よく達することは、業務プログラムを書くときには大事なこはいえ、ご質問に
318
318
 
319
319
 
320
320
 

51

テキスト修正

2018/10/07 22:08

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -464,4 +464,4 @@
464
464
 
465
465
 
466
466
 
467
- 今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。ありがとうございました。
467
+ 今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これをLodashで決する方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。ありがとうございました。

50

テキスト修正

2018/10/07 21:54

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -308,11 +308,31 @@
308
308
 
309
309
 
310
310
 
311
+
312
+
311
313
  ## 補足1
312
314
 
313
315
 
314
316
 
315
- この回くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうま方法があるのでは?」と思える問題にぶつかっ場合、「これを解く方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度めていくこときます。ありがざいます。
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
- - 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)
457
+
458
+
459
+
460
+
461
+
462
+
463
+ ## 追伸
464
+
465
+
466
+
467
+ 今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解く方法について Adam Boduchさんが、どこかで何か言ってないか?」というのも検索すると思います。このようにして検索の確度を高めていくことができます。ありがとうございました。

49

テキスト修正

2018/10/07 21:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -434,7 +434,7 @@
434
434
 
435
435
  ```
436
436
 
437
- である2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずは次の一歩となる、terataillerさんにとっての
437
+ であることは分かっている2つのオブジェクト objectA と objectB とを比較して、objectBのほうが新しいものであるとして更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、(これは自力で)スクラッチから書いてみるとよいかもしれません。それがまずはterataillerさんにとっての(次の一歩となる、)
438
438
 
439
439
 
440
440
 

48

テキスト修正

2018/10/07 21:30

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -312,7 +312,7 @@
312
312
 
313
313
 
314
314
 
315
- 今回この回答を書くことを通じて、恥ずかしながら私も Adam Boduchさんの存在を初めて知ることができ、ひとつ学べました。ありがとうございます。ですので、次に、配列やオブジェクトの操作で、「Lodashを使ったうまい方法があるのでは?」と思える問題にぶつかった場合、「これを解く方法について 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
- によって、差分のあるプロパティだけを取り出せるとお考えでしたら、 もしかすると、`===` が true になる条件を再確認する必要があるのでは? ということです。ですので、
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

テキスト修正

2018/10/07 21:24

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -346,7 +346,7 @@
346
346
 
347
347
 
348
348
 
349
- あらためてterataillerさんのご質問を再読して思うところとしては、(老婆心ながら)ご質問にあるコード
349
+ あらためてterataillerさんのご質問を再読して(老婆心ながら)思うところとしては、ご質問にあるコード
350
350
 
351
351
 
352
352
 

46

テキスト修正

2018/10/07 13:12

投稿

jun68ykt
jun68ykt

スコア9058

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
- によって、(内容に)差分のあるプロパティだけを取り出せるとお考えでしたら、 もしかすると、`===` が 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
 
@@ -374,7 +374,7 @@
374
374
 
375
375
 
376
376
 
377
- - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、締め切りのある開発時間の中で必要修正も加えて自分の課題解決に使うことができる。
377
+ - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながら、どんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、ときに締め切りに追われ限られた開発時間の中で必要あれば修正も加えて自分の課題解決に使うことができる。
378
378
 
379
379
 
380
380
 

45

テキスト修正

2018/10/07 13:09

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -382,7 +382,7 @@
382
382
 
383
383
 
384
384
 
385
- - `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある、特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
385
+ - `===` で true になる条件という基礎知識正しく活用して、自分の開発業務の範囲内にある、ある特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
386
386
 
387
387
 
388
388
 

44

テキスト修正

2018/10/07 13:04

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。
5
+ オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違いではありません。(実際、私も同じ課題に直面したら、まずは、Lodash に便利なメソッドはないか?と探すと思います。)
6
6
 
7
7
 
8
8
 

43

テキスト修正

2018/10/07 12:56

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -436,4 +436,4 @@
436
436
 
437
437
 
438
438
 
439
- コードになるのではと思った次第です。
439
+ コードになると思いますし、それが書けてからLodashを使った汎用的なコードを採用ることにしても遅くはありません

42

テキスト修正

2018/10/07 12:36

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 11:58

投稿

jun68ykt
jun68ykt

スコア9058

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` とは内容が同じなので、更新のあったプロパティを持つオブジェクトとしては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクトは、以下
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

テキスト修正

2018/10/07 11:46

投稿

jun68ykt
jun68ykt

スコア9058

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
- によって、(内容に)差分のあるプロパティだけを取り出せるとお考えになってしまったのでしたら、 `===` が true になる条件を再確認する必要があるのでは? ということです。ですので、
361
+ によって、(内容に)差分のあるプロパティだけを取り出せるとお考えでしたら、 もしかすると、`===` が true になる条件を再確認する必要があるのでは? ということです。ですので、
362
362
 
363
363
 
364
364
 

39

テキスト修正

2018/10/07 11:20

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -374,7 +374,7 @@
374
374
 
375
375
 
376
376
 
377
- - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもし、「オブジェクト一般の差分取得する」というような、(いわば)大きなテーマのコードを持ってきて、必要な修正も加えたうえ自分の課題解決に使うことができる。
377
+ - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台として使ったりもしながらどんなオブジェクトにも使える「オブジェクト一般の差分取得」というような、(いわば)大きなテーマのコードを持ってきて、限られた開発時間の中で必要な修正も加え自分の課題解決に使うことができる。
378
378
 
379
379
 
380
380
 

38

テキスト修正

2018/10/07 10:53

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 09:58

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -374,7 +374,7 @@
374
374
 
375
375
 
376
376
 
377
- - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台して、オブジェクト一般の差分を取得するという、わりと大きテーマのコードを書ける。
377
+ - Lodash (なり、他の便利な何か)を使って、必要な情報に効率よくリーチして、ときには他の優れたプログラマーの成果物を土台して使ったりもしオブジェクト一般の差分を取得するというような(いば)大きテーマのコードを持ってきて、必要なら修正も加えたうえ自分の課題解決に使うことができる。
378
378
 
379
379
 
380
380
 

36

テキスト修正

2018/10/07 09:50

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 09:42

投稿

jun68ykt
jun68ykt

スコア9058

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` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクトは、以下
75
+ では、 `objectA` と `objectB` とは内容が同じなので、更新のあったプロパティを持つオブジェクトとしては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクトは、以下
76
76
 
77
77
 
78
78
 

34

テキスト修正

2018/10/07 09:36

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -382,7 +382,7 @@
382
382
 
383
383
 
384
384
 
385
- - `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある、特定の形式のオブジェクトを比較するコードを難なく書ける。
385
+ - `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある、特定の形式のオブジェクトを比較するコードを、(Lodashのような便利グッズを使わず、スクラッチから)難なく書ける。
386
386
 
387
387
 
388
388
 

33

テキスト修正

2018/10/07 09:29

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないです。
21
+ だと、更新のあったプロパティだけを抽出するという期待した動作を満たせないは?という懸念があります。
22
22
 
23
23
  簡単な例だと、たとえば以下のコード
24
24
 

32

テキスト修正

2018/10/07 09:25

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 09:10

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- まず、オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違ってなと思い
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

テキスト修正

2018/10/07 09:07

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 08:49

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 08:46

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -382,7 +382,7 @@
382
382
 
383
383
 
384
384
 
385
- - `===` で true になる条件を間違えないで、自分の検討対象内にある特定の形式のオブジェクトを比較するコードを難なく書ける。
385
+ - `===` で true になる条件を間違えないで、自分の検討対象の範囲内にある特定の形式のオブジェクトを比較するコードを難なく書ける。
386
386
 
387
387
 
388
388
 

27

テキスト修正

2018/10/07 08:41

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -424,4 +424,4 @@
424
424
 
425
425
  ```
426
426
 
427
- である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それが、まずは次の一歩となるベターなコードになるのではと考え次第です
427
+ である2つのオブジェクト objectA と objectB とを比較して、更新されたプロパティだけを集めたオブジェクトを作る関数なりメソッドなりを、スクラッチから書いてみるとよいかもしれません。それが、まずは次の一歩となるベターなコードになるのではと思いました。

26

テキスト修正

2018/10/07 08:34

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 08:32

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 08:16

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -308,11 +308,7 @@
308
308
 
309
309
 
310
310
 
311
- ---
312
-
313
-
314
-
315
- **補足1**
311
+ ## 補足1
316
312
 
317
313
 
318
314
 
@@ -320,11 +316,7 @@
320
316
 
321
317
 
322
318
 
323
- ---
324
-
325
-
326
-
327
- **補足2**
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

テキスト修正

2018/10/07 07:28

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -96,7 +96,7 @@
96
96
 
97
97
 
98
98
 
99
- のようにconsole.logで表示されでしょう上記の検証用のサンプルを以下に上げましたので、ご確認ください。
99
+ であることが、console.logの出力確認できると思いますこれの検証用のサンプルを以下に上げましたので、ご確認ください。
100
100
 
101
101
 
102
102
 

22

テキスト修正

2018/10/07 04:12

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -336,7 +336,7 @@
336
336
 
337
337
 
338
338
 
339
- と書かれているモヤモヤ(を感じることのできるセンスを維持すること)もまた大事です。
339
+ と書かれているモヤモヤ(を感じることのできるセンスを維持すること)もまた大事です。
340
340
 
341
341
  ですので、一度、ご自身でオブジェクトの内容比較のコードを書いてみるのもよいかもしれません。そうすると、以下の質問
342
342
 

21

テキスト修正

2018/10/07 04:10

投稿

jun68ykt
jun68ykt

スコア9058

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` プロパティが等しくないプロパティとしてピックアップされ`_.omitBy`の返すオブジェクトとして、以下
75
+ では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` が等しくないプロパティとして残ることになり、結果として`_.omitBy`の返すオブジェクト、以下
78
76
 
79
77
 
80
78
 
@@ -98,7 +96,7 @@
98
96
 
99
97
 
100
98
 
101
- console に表示されることでしょう。上記の検証用のサンプルを以下に上げましたので、ご確認ください。
99
+ のようにconsole.logで表示されることでしょう。上記の検証用のサンプルを以下に上げましたので、ご確認ください。
102
100
 
103
101
 
104
102
 

20

テキスト修正

2018/10/07 04:05

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 03:49

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 02:38

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 02:14

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -102,7 +102,7 @@
102
102
 
103
103
 
104
104
 
105
- - [https://jsfiddle.net/jun68ykt/nhom4uw8/5/](https://jsfiddle.net/jun68ykt/nhom4uw8/5/)
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/12/](https://jsfiddle.net/jun68ykt/g0zctujb/12/)
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/1/](https://jsfiddle.net/jun68ykt/Lpwe0952/1/)
287
+ - [https://jsfiddle.net/jun68ykt/Lpwe0952/3/](https://jsfiddle.net/jun68ykt/Lpwe0952/3/)
288
288
 
289
289
 
290
290
 

16

テキスト修正

2018/10/07 02:03

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -138,7 +138,7 @@
138
138
 
139
139
  を拝借するのがよいと思いました。
140
140
 
141
- (※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶところは、個人の判断に委ねられるところなので、別の投稿のほうが使えると判断される方もいらっしゃることでしょう。)
141
+ (※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶは、個人の判断に委ねられるところなので、別の投稿や回答のほうが使えると判断される方もいらっしゃることでしょう。)
142
142
 
143
143
 
144
144
 

15

テキスト修正

2018/10/07 01:58

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 01:26

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- まず、オブジェクトや配列に対してちょっと込み入った操作をするために Lodash を利用しようという選択にたどりついたこと自体は、間違ってないと思います。
5
+ まず、オブジェクトや配列に対してちょっと込み入った操作をするときに Lodash を利用するという選択自体は、間違ってないと思います。
6
6
 
7
7
 
8
8
 

13

テキスト修正

2018/10/07 01:11

投稿

jun68ykt
jun68ykt

スコア9058

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/11/](https://jsfiddle.net/jun68ykt/g0zctujb/11/)
277
+ - [https://jsfiddle.net/jun68ykt/g0zctujb/12/](https://jsfiddle.net/jun68ykt/g0zctujb/12/)
278
278
 
279
279
 
280
280
 

12

テキスト修正

2018/10/07 01:08

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
File without changes

11

テキスト修正

2018/10/07 01:02

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` プロパティが等しくないプロパティとしてピックアップされて、以下が console に表示されるこょう。
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

テキスト修正

2018/10/07 01:02

投稿

jun68ykt
jun68ykt

スコア9058

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/10/](https://jsfiddle.net/jun68ykt/g0zctujb/10/)
277
+ - [https://jsfiddle.net/jun68ykt/g0zctujb/11/](https://jsfiddle.net/jun68ykt/g0zctujb/11/)
278
278
 
279
279
 
280
280
 

9

テキスト修正

2018/10/07 00:56

投稿

jun68ykt
jun68ykt

スコア9058

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
- (4) 今回のご質問の場合、 [Adam Boduch](https://www.amazon.com/Adam-Boduch/e/B005K03U8O) さんによる回答: [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152) を拝借するのがよいと思いました。
133
+ - [https://stackoverflow.com/a/31686152](https://stackoverflow.com/a/31686152)
134
+
135
+
136
+
137
+
138
+
139
+ を拝借するのがよいと思いました。
132
140
 
133
141
  (※ただし検索結果として出てきた、どの投稿あるいは回答が一番使えるか?を選ぶところは、個人の判断に委ねられるところなので、別の投稿のほうが使えると判断される方もいらっしゃることでしょう。)
134
142
 

8

テキスト修正

2018/10/07 00:51

投稿

jun68ykt
jun68ykt

スコア9058

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
- 先ほど、「業務上でこの種の問題に遭遇した場合、すでに誰かが作ってくれた、より確からしい実装に早くたどりつく必要があります」と書きましたが、その観点でいうと、(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルにヒットしそうな検索ワードをあれこれと試します。
293
+ 先ほど、
294
+
295
+ 「業務上でこの種の問題に遭遇した場合、すでに(優れたプログラマーである)誰かが作ってくれた、より確からしい実装に早くたどりつく必要がありますね。」
296
+
297
+ と書きました。その観点でいうと、(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルにヒットしそうな検索ワードをあれこれと試します。
294
298
 
295
299
 
296
300
 

7

テキスト修正

2018/10/07 00:48

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 00:45

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -290,7 +290,7 @@
290
290
 
291
291
 
292
292
 
293
- 先に書い(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルになっていそうなもの考えます。
293
+ ほど、「業務上でこの種の問題遭遇した場合、すでに誰かが作ってくれた、より確からしい実装に早くたどりつく必要があります」ときましたが、その観点でうと、(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルにヒットしそうな検索ワードあれこれと試します。
294
294
 
295
295
 
296
296
 

5

テキスト修正

2018/10/07 00:38

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
 
76
76
 
77
- では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記では、`images` プロパティが等しくないプロパティとしてピックアップされて、以下が console に表示されることでしょう。
77
+ では、 `objectA` と `objectB` とは内容が同じなので、差分としては空オブジェクト `{}` が返ってきて欲しいところですが、上記を実行すると `images` プロパティが等しくないプロパティとしてピックアップされて、以下が console に表示されることでしょう。
78
78
 
79
79
 
80
80
 

4

テキスト修正

2018/10/07 00:34

投稿

jun68ykt
jun68ykt

スコア9058

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

テキスト修正

2018/10/07 00:20

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -116,19 +116,19 @@
116
116
 
117
117
 
118
118
 
119
- (1) まずは `"lodash defference between two objects"` で[グーグル検索](https://www.google.co.jp/search?q=lodash+defference+between+two+objects)
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) 検索結果で出てきた一番上 [How to do a deep comparison between 2 objects with lodash?](https://stackoverflow.com/questions/31683075/how-to-do-a-deep-comparison-between-2-objects-with-lodash)をざっと読む。
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) でいかに適切な英語で検索できるかす。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルになっていそうなものを考えます。
291
+ 先に書いた(1)から(4)のステップで大事なのは、 まずは(1)でいかに適切な英語で検索できるかだと思ってます。ですので、なるべく、stackoverflow のタイトルや、使いたいモジュールの発信元である GitHubレポジトリの issueタイトルになっていそうなものを考えます。
292
292
 
293
293
 
294
294
 

2

テキスト修正

2018/10/07 00:17

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -116,7 +116,7 @@
116
116
 
117
117
 
118
118
 
119
- (1) まずは `"lodash defference betwenn two objects"` で[グーグル検索](https://www.google.co.jp/search?q=lodash+defference+betwenn+two+objects)
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

テキスト修正

2018/10/07 00:09

投稿

jun68ykt
jun68ykt

スコア9058

test CHANGED
@@ -112,7 +112,7 @@
112
112
 
113
113
 
114
114
 
115
- この問題だったら、lodashを使うというのは筋として悪くないと思うので、
115
+ このご質の解決策を見つけるときは、lodashを使うというのは筋として悪くないと思うので、
116
116
 
117
117
 
118
118