我是一名Swift新手,在排序多维数组时遇到困难。 (已安装并导入Alamofire和SwiftyJSON)
我希望按照每个人的最高分数对主JSON数组进行排序。 我能够用
对每个人进行排序[&#34;得分&#34;]<div style="background-image: url('http://placekitten.com/1200/800'); background-size: cover; position: fixed; top: 0; right: 0; bottom: 0; left:0"></div>
但是,我不知道如何影响主要的JSON数组顺序。
这是我的JSON文件,
for x in 0..<JSONArray.count{
let b = JSONArray[x]["scores"].array?.sorted{$0["test"] < $1["test"]}
}
我想要的最终JSON输出是
{"students": [{
"id": 1,
"profile": [{
"name": "Kenneth",
"age": 19
}],
"scores": [{
"test": 62
}, {
"test": 80
}, {
"test": 95
}]
}, {
"id": 2,
"profile": [{
"name": "Thomas",
"age": 12
}],
"scores": [{
"test": 60
}, {
"test": 92
}, {
"test": 30
}]
}, {
"id": 3,
"profile": [{
"name": "May",
"age": 15
}],
"scores": [{
"test": 62
}, {
"test": 72
}, {
"test": 100
}]
}]}
感谢您的帮助!
答案 0 :(得分:0)
目前,您要按升序对scores
数组进行排序,您需要将其排序为降序,然后在主json数组中设置此排序数组。之后使用scores
数组的第一个值对主数组进行排序。
//Forst soret main json by max score
var jsonArray = json["students"].arrayValue
//Sort score array
for x in 0..<jsonArray.count{
let sortedScores = jsonArray[x]["scores"].arrayValue.sorted{$0["test"] > $1["test"]}
jsonArray[x]["scores"] = JSON(sortedScores)
}
//Sort main array using first object of scores array
let sortedJSON = jsonArray.sorted { $0["scores"].arrayValue[0]["test"].intValue > $1["scores"].arrayValue[0]["test"].intValue }
print(sortedJSON)