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

質問編集履歴

24

修正

2021/07/09 12:42

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -69,7 +69,7 @@
69
69
  もう少し効率の良いやりかたがあれば。
70
70
 
71
71
  ```javascript
72
- // 先にdraggedRowDataの順番とorderを入れ替えした。サンプルのためコードは省略
72
+ // 先にdraggedRowDataの順番とorderを入れ替えした。サンプルのため直接配列を書いてます。
73
73
  let draggedRowData = [
74
74
  {id: 2, text: "TEST4", order: 1, isDeleted: false}
75
75
  {id: 1, text: "TEST1", order: 2, isDeleted: false},

23

修正

2021/07/09 12:42

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -75,7 +75,7 @@
75
75
  {id: 1, text: "TEST1", order: 2, isDeleted: false},
76
76
  ];
77
77
 
78
- let mergedRowData = tempRowData.reduce((accumulator, currentValue, index) => {
78
+ let mergedRowData = tempRowData.reduce((accumulator, currentValue) => {
79
79
  let rData = draggedRowData.find((e) => e.id === currentValue.id);
80
80
  accumulator.push(rData ? rData : currentValue);
81
81
  return accumulator;

22

修正

2021/07/09 12:41

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -63,7 +63,7 @@
63
63
 
64
64
  追記
65
65
 
66
- draggedRowDataをsort、再連番して、
66
+ 先にdraggedRowDataの順とorderを入れ替えた。
67
67
  reduceを修正して、reduce処理後に、sort、再連番して、期待する結果になりました、少し冗長になってしまったかもしれません。
68
68
 
69
69
  もう少し効率の良いやりかたがあれば。

21

訂正

2021/07/09 12:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -97,7 +97,7 @@
97
97
  /*
98
98
  結果
99
99
  [
100
- { id: 2, text: 'TEST2', order: 1, isDeleted: false },
100
+ { id: 2, text: 'TEST4', order: 1, isDeleted: false },
101
101
  { id: 1, text: 'TEST1', order: 2, isDeleted: false },
102
102
  { id: 3, text: 'TEST3', order: 3, isDeleted: true }
103
103
  ]

20

修正

2021/07/09 12:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -23,7 +23,7 @@
23
23
 
24
24
  let draggedRowData = [
25
25
  {id: 1, text: "TEST1", order: 2, isDeleted: false},
26
- {id: 2, text: "TEST2", order: 1, isDeleted: false}
26
+ {id: 2, text: "TEST4", order: 1, isDeleted: false}
27
27
  ];
28
28
 
29
29
  const mergedRowData = tempRowData.reduce((accumulator, currentValue) => {
@@ -54,7 +54,7 @@
54
54
 
55
55
  取得したいデータ
56
56
  [
57
- { id: 2, text: 'TEST2', order: 1, isDeleted: false },
57
+ { id: 2, text: 'TEST4', order: 1, isDeleted: false },
58
58
  { id: 1, text: 'TEST1', order: 2, isDeleted: false },
59
59
  { id: 3, text: 'TEST3', order: 3, isDeleted: true }
60
60
  ]
@@ -71,7 +71,7 @@
71
71
  ```javascript
72
72
  // 先にdraggedRowDataの順番とorderを入れ替えした。サンプルのためコードは省略
73
73
  let draggedRowData = [
74
- {id: 2, text: "TEST2", order: 1, isDeleted: false}
74
+ {id: 2, text: "TEST4", order: 1, isDeleted: false}
75
75
  {id: 1, text: "TEST1", order: 2, isDeleted: false},
76
76
  ];
77
77
 

19

修正

2021/07/09 12:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -69,21 +69,9 @@
69
69
  もう少し効率の良いやりかたがあれば。
70
70
 
71
71
  ```javascript
72
- let tempRowData = [
73
- {id: 1, text: "TEST1", order: 1, isDeleted: false},
74
- {id: 2, text: "TEST2", order: 2, isDeleted: false},
75
- {id: 3, text: "TEST3", order: 3, isDeleted: true}
72
+ // 先にdraggedRowDataの順番とorderを入れ替えした。サンプルのためコードは省略
76
- ];
77
-
78
73
  let draggedRowData = [
79
- {id: 1, text: "TEST1", order: 2, isDeleted: false},
80
74
  {id: 2, text: "TEST2", order: 1, isDeleted: false}
81
- ];
82
-
83
- // 先にdraggedRowDataのorderを再連番した
84
- // サンプルのため、そのまま変数に入れてます。
85
- draggedRowData = [
86
- {id: 2, text: "TEST2", order: 1, isDeleted: false}
87
75
  {id: 1, text: "TEST1", order: 2, isDeleted: false},
88
76
  ];
89
77
 

18

修正

2021/07/09 12:38

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -81,14 +81,12 @@
81
81
  ];
82
82
 
83
83
  // 先にdraggedRowDataのorderを再連番した
84
+ // サンプルのため、そのまま変数に入れてます。
84
- draggedRowData.sort((a, b) => {
85
+ draggedRowData = [
86
+ {id: 2, text: "TEST2", order: 1, isDeleted: false}
85
- return a.order - b.order;
87
+ {id: 1, text: "TEST1", order: 2, isDeleted: false},
86
- });
88
+ ];
87
89
 
88
- draggedRowData.forEach((currentValue, index) => {
89
- currentValue.order = index + 1;
90
- });
91
-
92
90
  let mergedRowData = tempRowData.reduce((accumulator, currentValue, index) => {
93
91
  let rData = draggedRowData.find((e) => e.id === currentValue.id);
94
92
  accumulator.push(rData ? rData : currentValue);

17

修正

2021/07/09 12:36

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -85,7 +85,7 @@
85
85
  return a.order - b.order;
86
86
  });
87
87
 
88
- let draggedRowData.forEach((currentValue, index) => {
88
+ draggedRowData.forEach((currentValue, index) => {
89
89
  currentValue.order = index + 1;
90
90
  });
91
91
 

16

修正

2021/07/09 12:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -63,6 +63,7 @@
63
63
 
64
64
  追記
65
65
 
66
+ draggedRowDataをsort、再連番して、
66
67
  reduceを修正して、reduce処理後に、sort、再連番して、期待する結果になりました、少し冗長になってしまったかもしれません。
67
68
 
68
69
  もう少し効率の良いやりかたがあれば。

15

修正

2021/07/09 12:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -79,16 +79,18 @@
79
79
  {id: 2, text: "TEST2", order: 1, isDeleted: false}
80
80
  ];
81
81
 
82
+ // 先にdraggedRowDataのorderを再連番した
83
+ draggedRowData.sort((a, b) => {
84
+ return a.order - b.order;
85
+ });
86
+
87
+ let draggedRowData.forEach((currentValue, index) => {
88
+ currentValue.order = index + 1;
89
+ });
90
+
82
91
  let mergedRowData = tempRowData.reduce((accumulator, currentValue, index) => {
83
92
  let rData = draggedRowData.find((e) => e.id === currentValue.id);
84
-
85
- if (rData) {
86
- accumulator.push(rData);
87
- } else {
88
- currentValue.order = index + 1;
89
- accumulator.push(currentValue);
93
+ accumulator.push(rData ? rData : currentValue);
90
- }
91
-
92
94
  return accumulator;
93
95
  }, []);
94
96
 

14

修正

2021/07/09 12:33

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -59,4 +59,58 @@
59
59
  { id: 3, text: 'TEST3', order: 3, isDeleted: true }
60
60
  ]
61
61
  */
62
+ ```
63
+
64
+ 追記
65
+
66
+ reduceを修正して、reduce処理後に、sort、再連番して、期待する結果になりました、少し冗長になってしまったかもしれません。
67
+
68
+ もう少し効率の良いやりかたがあれば。
69
+
70
+ ```javascript
71
+ let tempRowData = [
72
+ {id: 1, text: "TEST1", order: 1, isDeleted: false},
73
+ {id: 2, text: "TEST2", order: 2, isDeleted: false},
74
+ {id: 3, text: "TEST3", order: 3, isDeleted: true}
75
+ ];
76
+
77
+ let draggedRowData = [
78
+ {id: 1, text: "TEST1", order: 2, isDeleted: false},
79
+ {id: 2, text: "TEST2", order: 1, isDeleted: false}
80
+ ];
81
+
82
+ let mergedRowData = tempRowData.reduce((accumulator, currentValue, index) => {
83
+ let rData = draggedRowData.find((e) => e.id === currentValue.id);
84
+
85
+ if (rData) {
86
+ accumulator.push(rData);
87
+ } else {
88
+ currentValue.order = index + 1;
89
+ accumulator.push(currentValue);
90
+ }
91
+
92
+ return accumulator;
93
+ }, []);
94
+
95
+ // orderでソート
96
+ mergedRowData.sort((a, b) => {
97
+ return a.order - b.order;
98
+ });
99
+
100
+ // 再連番
101
+ mergedRowData.forEach((currentValue, index) => {
102
+ currentValue.order = index + 1;
103
+ });
104
+
105
+ tempRowData = mergedRowData;
106
+ console.log(tempRowData);
107
+
108
+ /*
109
+ 結果
110
+ [
111
+ { id: 2, text: 'TEST2', order: 1, isDeleted: false },
112
+ { id: 1, text: 'TEST1', order: 2, isDeleted: false },
113
+ { id: 3, text: 'TEST3', order: 3, isDeleted: true }
114
+ ]
115
+ */
62
116
  ```

13

修正

2021/07/09 12:28

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
  {id: 2, text: "TEST2", order: 1, isDeleted: false}
27
27
  ];
28
28
 
29
- const mergedData = tempRowData.reduce((accumulator, currentValue) => {
29
+ const mergedRowData = tempRowData.reduce((accumulator, currentValue) => {
30
30
  let rData = draggedRowData.find((r) => r.id === currentValue.id );
31
31
 
32
32
  if (rData) {
@@ -41,7 +41,7 @@
41
41
  }, []);
42
42
 
43
43
 
44
- tempRowData = mergedData;
44
+ tempRowData = mergedRowData;
45
45
  console.log(tempRowData);
46
46
 
47
47
  /*

12

修正

2021/07/09 12:20

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -27,7 +27,7 @@
27
27
  ];
28
28
 
29
29
  const mergedData = tempRowData.reduce((accumulator, currentValue) => {
30
- let rData = rowData.find((r) => r.id === currentValue.id );
30
+ let rData = draggedRowData.find((r) => r.id === currentValue.id );
31
31
 
32
32
  if (rData) {
33
33
  rData.order = index + 1;

11

修正

2021/07/09 12:14

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- javascriptで2つの配列を後の配列のorder優先でマージする方法を教えてください
1
+ javascriptで2つの配列を後の配列優先でマージする方法を教えてください
body CHANGED
@@ -1,4 +1,4 @@
1
- javascriptで2つの配列を後の配列のorder優先でマージする方法を教えてください
1
+ javascriptで2つの配列を後の配列優先でマージする方法を教えてください
2
2
 
3
3
  [javascriptで2つの連想配列のマージを効率良く実行する方法を教えて下さい。](https://teratail.com/questions/321600)
4
4
  から、2つの配列をマージをする方法で、順番を考える必要がでてきたのですがが、

10

修正

2021/07/09 12:06

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- javascriptでの配列のorderで、前の配列のorderを再構築する方法を教えてください
1
+ javascriptで2つの配列を後の配列のorder優先でマージする方法を教えてください
body CHANGED
@@ -1,4 +1,4 @@
1
- の配列のorderで、前の配列のorderを再構築する方法を教えてください
1
+ javascriptで2つの配列を後の配列のorder優先でマージする方法を教えてください
2
2
 
3
3
  [javascriptで2つの連想配列のマージを効率良く実行する方法を教えて下さい。](https://teratail.com/questions/321600)
4
4
  から、2つの配列をマージをする方法で、順番を考える必要がでてきたのですがが、
@@ -7,16 +7,13 @@
7
7
 
8
8
  (前提条件)
9
9
  draggedRowData <= tempRowData
10
- orderの変更時はその他のカラムデータは更新しない
11
10
 
12
11
  わかるかたいらっしゃいましたら、ご教授お願いします。
13
12
 
14
13
  下記のソースは2つの配列をマージしているのですが、tempRowData優先になっています。
15
14
  その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているから、tempRowDataの順番でdraggedRowDataを取得してしまうところまでわかっているのですが。
16
15
 
17
- tempRowDataにマージせず、orderのみを振りなおす必要があるかもしれません。
18
16
 
19
-
20
17
  ```javascript
21
18
  let tempRowData = [
22
19
  {id: 1, text: "TEST1", order: 1, isDeleted: false},

9

修正

2021/07/09 11:51

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
 
8
8
  (前提条件)
9
9
  draggedRowData <= tempRowData
10
- orderの変更時はその他のデータは更新しない
10
+ orderの変更時はその他のカラムデータは更新しない
11
11
 
12
12
  わかるかたいらっしゃいましたら、ご教授お願いします。
13
13
 

8

修正

2021/07/09 11:39

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -14,7 +14,7 @@
14
14
  下記のソースは2つの配列をマージしているのですが、tempRowData優先になっています。
15
15
  その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているから、tempRowDataの順番でdraggedRowDataを取得してしまうところまでわかっているのですが。
16
16
 
17
- tempRowDataにマージせず、orderを振りなおす必要あるかもしれません。
17
+ tempRowDataにマージせず、orderのみを振りなおす必要あるかもしれません。
18
18
 
19
19
 
20
20
  ```javascript
@@ -30,7 +30,6 @@
30
30
  ];
31
31
 
32
32
  const mergedData = tempRowData.reduce((accumulator, currentValue) => {
33
- // この方法だと、tempRowDataが優先で、draggedRowDataが優先じゃなかった。
34
33
  let rData = rowData.find((r) => r.id === currentValue.id );
35
34
 
36
35
  if (rData) {

7

修正

2021/07/09 11:33

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- javascriptで2つ連想配列のマージを後の配列のデータ優先で行う方法を教えてください
1
+ javascriptでの配列のorderで、前の配列のorder再構築する方法を教えてください
body CHANGED
@@ -1,16 +1,22 @@
1
- javascriptで2つ連想配列のマージを後の配列のデータ優先で行う方法を教えてください
1
+ の配列のorderで、前の配列のorder再構築する方法を教えてください
2
2
 
3
3
  [javascriptで2つの連想配列のマージを効率良く実行する方法を教えて下さい。](https://teratail.com/questions/321600)
4
- から、2つの配列をマージをする方法で、順番を考えてプログラムを組まなければいけなくなったのですが、
4
+ から、2つの配列をマージをする方法で、順番を考える必要がでたのですが
5
5
 
6
- draggedRowData <= tempRowData 関係マージdraggedData優先にする方法について、わかるかたらっしゃいしたら、
6
+ 配列orderで前の配列のorder再構築をしたと考えています。
7
- ご教授お願いします。
8
7
 
8
+ (前提条件)
9
+ draggedRowData <= tempRowData
10
+ orderの変更時はその他のデータは更新しない
11
+
12
+ わかるかたいらっしゃいましたら、ご教授お願いします。
13
+
9
- 下記のソースはマージがtempRowData優先になっています。
14
+ 下記のソースは2つの配列をマージしているのですtempRowData優先になっています。
10
15
  その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているから、tempRowDataの順番でdraggedRowDataを取得してしまうところまでわかっているのですが。
11
- マージをdraggedRowData優先にする方法が知りたいです。
12
16
 
17
+ tempRowDataにマージせず、orderを振りなおす必要はあるかもしれません。
13
18
 
19
+
14
20
  ```javascript
15
21
  let tempRowData = [
16
22
  {id: 1, text: "TEST1", order: 1, isDeleted: false},

6

修正

2021/07/09 11:32

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  下記のソースはマージがtempRowData優先になっています。
10
10
  その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているから、tempRowDataの順番でdraggedRowDataを取得してしまうところまでわかっているのですが。
11
- マージをdraggedData優先にする方法が知りたいです。
11
+ マージをdraggedRowData優先にする方法が知りたいです。
12
12
 
13
13
 
14
14
  ```javascript

5

修正

2021/07/09 11:24

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
  ご教授お願いします。
8
8
 
9
9
  下記のソースはマージがtempRowData優先になっています。
10
- その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているからです。
10
+ その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているから、tempRowDataの順番draggedRowDataを取得してしまうところまでわかっているので
11
11
  マージをdraggedData優先にする方法が知りたいです。
12
12
 
13
13
 

4

修正

2021/07/09 11:22

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -7,7 +7,7 @@
7
7
  ご教授お願いします。
8
8
 
9
9
  下記のソースはマージがtempRowData優先になっています。
10
- その理由は find((e) => e.id === currentValue.id); を使っているからです。
10
+ その理由は draggedRowData.find((e) => e.id === currentValue.id); を使っているからです。
11
11
  マージをdraggedData優先にする方法が知りたいです。
12
12
 
13
13
 

3

修正

2021/07/09 11:20

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,9 @@
6
6
  draggedRowData <= tempRowData の関係の時、マージをdraggedData優先にする方法について、わかるかたいらっしゃいましたら、
7
7
  ご教授お願いします。
8
8
 
9
- 下記のソースはマージがtempRowData優先になっています。マージをdraggedData優先にする方法が知りたいです。
9
+ 下記のソースはマージがtempRowData優先になっています。
10
+ その理由は find((e) => e.id === currentValue.id); を使っているからです。
11
+ マージをdraggedData優先にする方法が知りたいです。
10
12
 
11
13
 
12
14
  ```javascript

2

修正

2021/07/09 11:20

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -48,7 +48,7 @@
48
48
  { id: 3, text: 'TEST3', order: 3, isDeleted: true }
49
49
  ]
50
50
 
51
- 表示したい方法
51
+ 取得したいデータ
52
52
  [
53
53
  { id: 2, text: 'TEST2', order: 1, isDeleted: false },
54
54
  { id: 1, text: 'TEST1', order: 2, isDeleted: false },

1

修正

2021/07/09 11:16

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -39,8 +39,17 @@
39
39
 
40
40
  tempRowData = mergedData;
41
41
  console.log(tempRowData);
42
+
42
43
  /*
44
+ 現在
43
45
  [
46
+ { id: 1, text: 'TEST1', order: 1, isDeleted: false },
47
+ { id: 2, text: 'TEST2', order: 2, isDeleted: false },
48
+ { id: 3, text: 'TEST3', order: 3, isDeleted: true }
49
+ ]
50
+
51
+ 表示したい方法
52
+ [
44
53
  { id: 2, text: 'TEST2', order: 1, isDeleted: false },
45
54
  { id: 1, text: 'TEST1', order: 2, isDeleted: false },
46
55
  { id: 3, text: 'TEST3', order: 3, isDeleted: true }