回答編集履歴
3
reduceを使った例を追記
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
修正漏れ箇所の修正
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)
|
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合体演算子に変更
test
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
|
9
9
|
const newData = draggedRowData.find(({ id }) => oldData.id === id)
|
10
10
|
|
11
|
-
return newData
|
11
|
+
return newData ?? oldData
|
12
12
|
|
13
13
|
}).sort((current, next) => current.order > next.order ? 1 : -1)
|
14
14
|
|