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

回答編集履歴

4

hairetu

2019/10/25 09:21

投稿

yambejp
yambejp

スコア117892

answer CHANGED
@@ -47,4 +47,20 @@
47
47
  .map((x,y)=>[x[0],Object.entries(userData).filter(z=>z[1]>x[1]).length+1])
48
48
  .reduce((x,y)=>(x[y[0]]=y[1],x),{});
49
49
  console.log(userRank);
50
+ ```
51
+
52
+ # 配列から
53
+ やってることは対して変わりません
54
+ (一応同順あり版で)
55
+ ```javascript
56
+ const userData = {
57
+ "a": [0, 0, 0, 23, 0],
58
+ "b": [0, 0, 0, 31, 0],
59
+ "c": [0, 0, 0, 4, 0],
60
+ "d": [0, 0, 0, 23, 0],
61
+ }
62
+ const userRank = Object.entries(userData)
63
+ .map((x,y)=>[x[0],Object.entries(userData).filter(z=>z[1][3]>x[1][3]).length+1])
64
+ .reduce((x,y)=>(x[y[0]]=y[1],x),{});
65
+ console.log(userRank);
50
66
  ```

3

chousei

2019/10/25 09:21

投稿

yambejp
yambejp

スコア117892

answer CHANGED
@@ -33,4 +33,18 @@
33
33
  .map((x,y)=>[x[0],y+1])
34
34
  .reduce((x,y)=>(x[y[0]]=y[1],x),{});
35
35
  console.log(userRank);
36
+ ```
37
+
38
+ # 同順あり
39
+ ```javascript
40
+ const userData = {
41
+ "a": 23,
42
+ "b": 31,
43
+ "c": 4,
44
+ "d": 23,
45
+ }
46
+ const userRank = Object.entries(userData)
47
+ .map((x,y)=>[x[0],Object.entries(userData).filter(z=>z[1]>x[1]).length+1])
48
+ .reduce((x,y)=>(x[y[0]]=y[1],x),{});
49
+ console.log(userRank);
36
50
  ```

2

chousei

2019/10/25 05:12

投稿

yambejp
yambejp

スコア117892

answer CHANGED
@@ -18,4 +18,19 @@
18
18
  var res=Object.entries(userData); // [["a",23],["b",31],["c",4]]を抽出
19
19
  res=res.sort((x,y)=>-x[1]+y[1]); // ソートして[["b",31],["a",23],["c",4]]にする
20
20
  res=res.map((x,y)=>[(y+1).toString()+"位",x[0]+"さん",x[1].toString()+"p"]);//各要素に単位や敬称をつける
21
+ ```
22
+
23
+ # rankをオブジェクトにする
24
+ ```javascript
25
+ const userData = {
26
+ "a": 23,
27
+ "b": 31,
28
+ "c": 4
29
+ }
30
+ const userRank = Object
31
+ .entries(userData)
32
+ .sort((x,y)=>-x[1]+y[1])
33
+ .map((x,y)=>[x[0],y+1])
34
+ .reduce((x,y)=>(x[y[0]]=y[1],x),{});
35
+ console.log(userRank);
21
36
  ```

1

ちょうせい

2019/10/21 10:20

投稿

yambejp
yambejp

スコア117892

answer CHANGED
@@ -4,6 +4,18 @@
4
4
  "b": 31,
5
5
  "c": 4
6
6
  }
7
- var res=Object.entries(userData).sort((x,y)=>-x[1]+y[1]).map((x,y)=>[y+1].concat(x));
7
+ //var res=Object.entries(userData).sort((x,y)=>-x[1]+y[1]).map((x,y)=>[y+1].concat(x));
8
+ var res=Object.entries(userData)
9
+ .sort((x,y)=>-x[1]+y[1])
10
+ .map((x,y)=>[(y+1).toString()+"位",x[0]+"さん",x[1].toString()+"p"]);
8
11
  console.log(res);
12
+ ```
13
+
14
+ 一部調整しました。
15
+ 上記ソースを3段階に分割すると以下
16
+ # 解説
17
+ ```javascript
18
+ var res=Object.entries(userData); // [["a",23],["b",31],["c",4]]を抽出
19
+ res=res.sort((x,y)=>-x[1]+y[1]); // ソートして[["b",31],["a",23],["c",4]]にする
20
+ res=res.map((x,y)=>[(y+1).toString()+"位",x[0]+"さん",x[1].toString()+"p"]);//各要素に単位や敬称をつける
9
21
  ```