回答編集履歴

3

reduceを使った例を追記

2021/07/09 14:23

投稿

taku-hu
taku-hu

スコア176

test CHANGED
@@ -1,4 +1,8 @@
1
1
  追記に関して、もっと簡潔に書きたいなら、
2
+
3
+
4
+
5
+ `map`を使って
2
6
 
3
7
 
4
8
 
@@ -16,7 +20,7 @@
16
20
 
17
21
 
18
22
 
19
- 読みにくいですが、一行で書きたいなら
23
+ 読みにくいですが、`return`を省略して一行で書きたいなら
20
24
 
21
25
 
22
26
 
@@ -28,4 +32,34 @@
28
32
 
29
33
 
30
34
 
35
+ `reduce`が使いたいなら
36
+
37
+
38
+
39
+ ```javascript
40
+
41
+ const mergedData = tempRowData.reduce((accumulator, currentValue) => {
42
+
43
+ const newData = draggedRowData.find(({ id }) => currentValue.id === id)
44
+
45
+ return [...accumulator, newData ?? currentValue]
46
+
47
+ }, []).sort((current, next) => current.order > next.order ? 1 : -1)
48
+
49
+ ```
50
+
51
+
52
+
53
+ 同じ要領で一行で書きたいなら
54
+
55
+
56
+
57
+ ```javascript
58
+
59
+ const mergedData = tempRowData.reduce((accumulator, currentValue) => [...accumulator, draggedRowData.find(({ id }) => currentValue.id === id) ?? currentValue], []).sort((current, next) => (current.order - next.order))
60
+
61
+ ```
62
+
63
+
64
+
31
65
  のような感じになるかと思います。

2

修正漏れ箇所の修正

2021/07/09 14:23

投稿

taku-hu
taku-hu

スコア176

test CHANGED
@@ -22,7 +22,7 @@
22
22
 
23
23
  ```javascript
24
24
 
25
- const mergedData = tempRowData.map(oldData => draggedRowData.find(({ id }) => oldData.id === id) || oldData).sort((current, next) => current.order - next.order)
25
+ const mergedData = tempRowData.map(oldData => draggedRowData.find(({ id }) => oldData.id === id) ?? oldData).sort((current, next) => current.order - next.order)
26
26
 
27
27
  ```
28
28
 

1

論理和演算子をnull合体演算子に変更

2021/07/09 13:01

投稿

taku-hu
taku-hu

スコア176

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  const newData = draggedRowData.find(({ id }) => oldData.id === id)
10
10
 
11
- return newData || oldData
11
+ return newData ?? oldData
12
12
 
13
13
  }).sort((current, next) => current.order > next.order ? 1 : -1)
14
14