質問するログイン新規登録

質問編集履歴

7

hensyu

2021/08/20 10:06

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -17,10 +17,10 @@
17
17
  return {fuga: method(obj.hoge), piyo: 'piyo' ...obj} //methodはasync関数
18
18
  }, mergeObj)
19
19
 
20
- originalObj = Object.assgin(originalObj, mergeObj}
20
+ originalObj = R.mergeDeepRight(originalObj, mergeObj}
21
21
  }
22
22
  ```
23
23
 
24
- このようなコードの`map`から`assgin`までの所を、[Ramda](https://ramdajs.com/)で短く・なるべく分かりやすくまとめたいです
24
+ このようなコードの`map`から`assgin`までの所を、[Ramda](https://ramdajs.com/)かLodashで短く・なるべく分かりやすくまとめたいです
25
25
  ramdaを使うのは初めてで、何が何だか全然分からない状態でマジで調べようもないです
26
26
  助けてくださいお願いします

6

編集

2021/08/20 10:06

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,20 +1,20 @@
1
1
  やりたいことはオブジェクトのマージです。
2
- 元々は`{name: string, hoge: string, fuga: string}`のオブジェクトの集合があります。
2
+ 元々は`{name: string, hoge: string, fuga: string, piyo: string}`のオブジェクトの集合があります。
3
3
  この集合を、元の集合の要素を上書きする要素は`{hoge: string}`、追加する要素は`{name: string, hoge: string}`という一部のプロパディを持ったオブジェクトの集合で上書きします
4
4
 
5
- これをそのまま上書きすると、追加された要素は`fuga`プロパティを持たないことになります。
5
+ これをそのまま上書きすると、追加された要素は`fuga`・`piyo`プロパティを持たないことになります。
6
- ですので、上書きする前に集合から追加する要素を判定して、`fuga`を追加します
6
+ ですので、上書きする前に集合から追加する要素を判定して、`fuga`・`piyo`を追加します
7
7
  `fuga`は`hoge`を引数に取るasync関数によって求められます
8
8
  ```JS
9
9
  async main = () => {
10
- let originalObj = {a: {name: 'a', hoge: 'hoge', fuga: 'fuga'}}
10
+ let originalObj = {a: {name: 'a', hoge: 'hoge', fuga: 'fuga', piyo: 'piyo}}
11
11
 
12
12
  let mergeObj = {a: {hoge: 'hogehoge'}, b: {name: 'b', hoge: 'hogehoge'}}
13
13
 
14
14
  mergeObj = R.map(obj => {
15
15
  if (!('name' in obj)) return obj
16
16
 
17
- return {fuga: method(obj.hoge), ...obj} //methodはasync関数
17
+ return {fuga: method(obj.hoge), piyo: 'piyo' ...obj} //methodはasync関数
18
18
  }, mergeObj)
19
19
 
20
20
  originalObj = Object.assgin(originalObj, mergeObj}

5

説明の追加

2021/08/20 02:07

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -1,15 +1,24 @@
1
+ やりたいことはオブジェクトのマージです。
2
+ 元々は`{name: string, hoge: string, fuga: string}`のオブジェクトの集合があります。
3
+ この集合を、元の集合の要素を上書きする要素は`{hoge: string}`、追加する要素は`{name: string, hoge: string}`という一部のプロパディを持ったオブジェクトの集合で上書きします
4
+
5
+ これをそのまま上書きすると、追加された要素は`fuga`プロパティを持たないことになります。
6
+ ですので、上書きする前に集合から追加する要素を判定して、`fuga`を追加します
7
+ `fuga`は`hoge`を引数に取るasync関数によって求められます
1
8
  ```JS
9
+ async main = () => {
2
- let originalObj = {a: {name: a, hoge: hoge, fuga: fuga}}
10
+ let originalObj = {a: {name: 'a', hoge: 'hoge', fuga: 'fuga'}}
3
11
 
4
- let mergeObj = {a: {hoge: hogehoge}, b: {name: b, hoge: hogehoge}}
12
+ let mergeObj = {a: {hoge: 'hogehoge'}, b: {name: 'b', hoge: 'hogehoge'}}
5
13
 
6
- mergeObj = R.map(obj => {
14
+ mergeObj = R.map(obj => {
7
- if ('fuga' in obj) return obj
15
+ if (!('name' in obj)) return obj
8
16
 
9
- return {fuga: fuga, ...obj}
17
+ return {fuga: method(obj.hoge), ...obj} //methodはasync関数
10
- }, mergeObj)
18
+ }, mergeObj)
11
19
 
12
- originalObj = Object.assgin(originalObj, mergeObj}
20
+ originalObj = Object.assgin(originalObj, mergeObj}
21
+ }
13
22
  ```
14
23
 
15
24
  このようなコードの`map`から`assgin`までの所を、[Ramda](https://ramdajs.com/)で短く・なるべく分かりやすくまとめたいです

4

2021/08/20 00:28

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -12,6 +12,6 @@
12
12
  originalObj = Object.assgin(originalObj, mergeObj}
13
13
  ```
14
14
 
15
- このようなコードの`map`から`assgin`までの所を、Ramdaで短く・なるべく分かりやすくまとめたいです
15
+ このようなコードの`map`から`assgin`までの所を、[Ramda](https://ramdajs.com/)で短く・なるべく分かりやすくまとめたいです
16
16
  ramdaを使うのは初めてで、何が何だか全然分からない状態でマジで調べようもないです
17
17
  助けてくださいお願いします

3

2021/08/19 15:00

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -12,5 +12,6 @@
12
12
  originalObj = Object.assgin(originalObj, mergeObj}
13
13
  ```
14
14
 
15
- このようなコードの`map`から`assgin`までの所を、Ramdaで短く・なるべく分かりやすくまとめて頂きたいです
15
+ このようなコードの`map`から`assgin`までの所を、Ramdaで短く・なるべく分かりやすくまとめたいです
16
+ ramdaを使うのは初めてで、何が何だか全然分からない状態でマジで調べようもないです
16
- よろしくお願いします
17
+ 助けてださいお願いします

2

syusei

2021/08/19 13:50

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
  mergeObj = R.map(obj => {
7
7
  if ('fuga' in obj) return obj
8
8
 
9
- obj.fuga = fuga
9
+ return {fuga: fuga, ...obj}
10
10
  }, mergeObj)
11
11
 
12
12
  originalObj = Object.assgin(originalObj, mergeObj}

1

修正

2021/08/19 12:44

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -3,14 +3,14 @@
3
3
 
4
4
  let mergeObj = {a: {hoge: hogehoge}, b: {name: b, hoge: hogehoge}}
5
5
 
6
- let mergeObj.map(obj => {
6
+ mergeObj = R.map(obj => {
7
7
  if ('fuga' in obj) return obj
8
8
 
9
9
  obj.fuga = fuga
10
- }
10
+ }, mergeObj)
11
11
 
12
12
  originalObj = Object.assgin(originalObj, mergeObj}
13
13
  ```
14
14
 
15
- このようなコードの`map`から`assgin`までの所を、Ramdaで短く・なるべく分かりやすくまとめたいです
15
+ このようなコードの`map`から`assgin`までの所を、Ramdaで短く・なるべく分かりやすくまとめて頂きたいです
16
16
  よろしくお願いします