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

回答編集履歴

4

修正

2020/02/21 17:34

投稿

kairi003
kairi003

スコア1332

answer CHANGED
@@ -8,4 +8,16 @@
8
8
  }
9
9
  var list = [["aaa",100],["bbb",10],["ccc",""],["ddd",30],["eee",40]].sort(comp);
10
10
  console.log(list);
11
- ```
11
+ ```
12
+
13
+ 追記
14
+ すみません、-Infinityから-Infinityを引くとNaNになっちゃいますね…
15
+ やはり
16
+ ```javascript
17
+ var comp = function(a, b) {
18
+ if (a[1] === "") return 1;
19
+ if (b[1] === "") return -1;
20
+ return (b[1] - a[1]);
21
+ }
22
+ ```
23
+ が妥当でしょうか

3

修正

2020/02/21 17:34

投稿

kairi003
kairi003

スコア1332

answer CHANGED
@@ -6,7 +6,6 @@
6
6
  var _b = (b[1] === "") ? -Infinity : b[1];
7
7
  return (_b - _a);
8
8
  }
9
-
10
9
  var list = [["aaa",100],["bbb",10],["ccc",""],["ddd",30],["eee",40]].sort(comp);
11
-
10
+ console.log(list);
12
11
  ```

2

修正

2020/02/20 13:07

投稿

kairi003
kairi003

スコア1332

answer CHANGED
@@ -8,4 +8,5 @@
8
8
  }
9
9
 
10
10
  var list = [["aaa",100],["bbb",10],["ccc",""],["ddd",30],["eee",40]].sort(comp);
11
+
11
12
  ```

1

修正

2020/02/20 13:06

投稿

kairi003
kairi003

スコア1332

answer CHANGED
@@ -1,12 +1,11 @@
1
1
  比較時に""を-Infinityに置き換えたらどうでしょうか.
2
2
 
3
3
  ```javascript
4
- function testSort(list) {
5
- list.sort(function(a, b) {
4
+ var comp = function(a, b) {
6
- var _a = (a[1] === "") ? -Infinity : a[1];
5
+ var _a = (a[1] === "") ? -Infinity : a[1];
7
- var _b = (b[1] === "") ? -Infinity : b[1];
6
+ var _b = (b[1] === "") ? -Infinity : b[1];
8
- return (_b - _a);
7
+ return (_b - _a);
9
- });
10
- return list;
11
8
  }
9
+
10
+ var list = [["aaa",100],["bbb",10],["ccc",""],["ddd",30],["eee",40]].sort(comp);
12
11
  ```