回答編集履歴

2

修正

2022/07/12 21:19

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,8 @@
1
1
  質問のコードのように、`array` の要素が `user_id` の昇順に並んでいることを前提としてよいのであれば、以下です。
2
2
  ```javascript
3
3
  const result = array.reduce((totals, { A, B, C, sum, user_id }) => {
4
- if (totals.at(-1)?.user_id === user_id) {
5
- const last = totals.at(-1);
4
+ const last = totals.at(-1);
5
+ if (last?.user_id === user_id) {
6
6
  last.A += A, last.B += B, last.C += C, last.sum += sum;
7
7
  } else {
8
8
  totals.push({ A, B, C, sum, user_id });
@@ -10,4 +10,4 @@
10
10
  return totals;
11
11
  }, []);
12
12
  ```
13
- 👉 https://codepen.io/su507/pen/ExEgZGj?editors=0012
13
+ 👉 https://codepen.io/su507/pen/XWEjaMK?editors=0012

1

修正

2022/07/12 21:00

投稿

退会済みユーザー
test CHANGED
@@ -1,7 +1,7 @@
1
- 質問のコードにあるよう`array` の要素が `user_id` の昇順に並んでいることを前提としてよいのであれば、以下です。
1
+ 質問のコードように、`array` の要素が `user_id` の昇順に並んでいることを前提としてよいのであれば、以下です。
2
2
  ```javascript
3
3
  const result = array.reduce((totals, { A, B, C, sum, user_id }) => {
4
- if (totals.length > 0 && totals.at(-1).user_id === user_id) {
4
+ if (totals.at(-1)?.user_id === user_id) {
5
5
  const last = totals.at(-1);
6
6
  last.A += A, last.B += B, last.C += C, last.sum += sum;
7
7
  } else {