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

回答編集履歴

2

add simpler method

2020/07/13 00:39

投稿

YufanLou
YufanLou

スコア466

answer CHANGED
@@ -1,4 +1,19 @@
1
+ 追記:fuzzballさんより、問題のフォーマットなら、日付順がちょうど辞書順と同じなので、直接比較しても大丈夫です。教えてくれてありがとうございます!
2
+
1
3
  ```swift
4
+ var dictionary_box:[[String:String]] =
5
+ [["name": "たろう", "money": "1000円", "birth_date": "2020年05月15日"],
6
+ ["name": "じろう", "money": "20000円", "birth_date": "2020年05月20日"],
7
+ ["name": "としろう", "money": "1001円", "birth_date": "2020年05月18日"]]
8
+
9
+ let sorted = dictionary_box.sorted { $0["birth_date"]! > $1["birth_date"]! }
10
+ ```
11
+
12
+ ---
13
+
14
+ 元の回答:
15
+
16
+ ```swift
2
17
  var dictionary_box: [[String : String]] =
3
18
  [["name": "たろう", "money": "1000円", "birth_date": "2020-05-15"],
4
19
  ["name": "じろう", "money": "20000円", "birth_date": "2020-05-20"],

1

コード修正

2020/07/13 00:39

投稿

YufanLou
YufanLou

スコア466

answer CHANGED
@@ -15,8 +15,13 @@
15
15
  let year = Int($0[yb...ye])!
16
16
  let month = Int($0[mb...me])!
17
17
  let day = Int($0[db...de])!
18
+ // print(year, month, day)
18
19
  return (year, month, day)
19
20
  }
20
- return d[0].0 > d[1].0 || d[0].1 > d[1].1 || d[0].2 > d[1].2
21
+ return d[0].0 != d[1].0 ? d[0].0 > d[1].0
22
+ : d[0].1 != d[1].1 ? d[0].1 > d[1].1
23
+ : d[0].2 > d[1].2
21
24
  }
22
- ```
25
+ ```
26
+
27
+ 修正:ただ年月日の比較を`||`(OR)で繋がったら、年か月か日か一つだけ大きいの方が前にしてしまいます。上記のようで、年が同じの場合だけ月を比較していいです。