回答編集履歴

2

ついき

2022/05/26 09:12

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -34,5 +34,43 @@
34
34
  return a.grpId === b.grpId ?(a.jobName>b.jobName?1:-1):b.grpId-a.grpId;
35
35
  });
36
36
  console.log(result);
37
+ ```
38
+ # 考え方
39
+ sort処理は2つの値を比較してプラスなら前にマイナスなら後ろに入れ替わります
40
+ 2次ソートは1次ソートが同じ値だった場合に処理をします冗長にかくとこうなります。
41
+ ```javascript
42
+ const a = [
43
+ [0,2,2],
44
+ [1,3,1],
45
+ [2,3,2],
46
+ [3,1,3],
47
+ [4,2,3],
48
+ [5,2,1],
49
+ [6,3,3],
50
+ [7,1,1],
51
+ [8,1,2],
52
+ ];
53
+ const b=a.sort((x,y)=>{
54
+ let ret=0;
55
+ if(x[1]==y[1]){
56
+ if(x[2]>y[2]){
57
+ ret=1;
58
+ }else{
59
+ ret=-1;
60
+ }
61
+ }else if(x[1]>y[1]){
62
+ ret=1;
63
+ }else{
64
+ ret=-1;
65
+ }
66
+ return ret;
67
+ })
68
+ console.log(b);
69
+ ```
70
+ ただし数値の場合
71
+ もしx[1]>y[1]なら1そうでないなら-1という処理をプラスマイナスだけの判断でいいので
72
+ x[1]-y[1]でできてしまいます
73
+ ```javascript
74
+ const b=a.sort((x,y)=>x[1]==y[1]?x[2]-y[2]:x[1]-y[1]);
75
+ ```
37
76
 
38
- ```

1

ついき

2022/05/26 08:40

投稿

yambejp
yambejp

スコア114843

test CHANGED
@@ -26,3 +26,13 @@
26
26
  });
27
27
  console.log(result);
28
28
  ```
29
+
30
+ # grpId降順→jobName照準
31
+ ```javascript
32
+ let result=[{jobs:null}];
33
+ result[0].jobs = date[0].jobs.sort(function(a,b){
34
+ return a.grpId === b.grpId ?(a.jobName>b.jobName?1:-1):b.grpId-a.grpId;
35
+ });
36
+ console.log(result);
37
+
38
+ ```