如何从特定键对数组排序?

问题描述

目前,我有一个声明为:

的数组
let VitamineARetinol = "VitamineARetinol"
let VitamineABetacarotene = "VitamineABetacarotene"
let VitamineC = "VitamineC"
let VitamineD = "VitamineD"
let Calories = "Calories"

typealias ListOfAliment = [String: [String: Double]]


let Data: ListOfAliment = [
    "Orange": [VitamineARetinol: 0.5,VitamineC: 0.3,VitamineD: 0.98,Calories: 100],"Pomme": [VitamineARetinol: 0.2,VitamineC: 0.2,VitamineD: 0.38,Calories: 120],"Poire": [VitamineARetinol: 0.1,VitamineC: 0.7,VitamineD: 0.58,Calories: 140],"Laitue": [VitamineARetinol: 0.3,VitamineC: 0.1,VitamineD: 0.92,Calories: 105],"Banane": [VitamineARetinol: 0.7,VitamineC: 0.01,VitamineD: 0.63,Calories: 122]
]

var ListOfAlimentClassed = Data

我需要通过卡路里键对其进行排序,同时保留所有数组数据,如下所示:

ListOfAlimentClassed = [
"Orange": [VitamineARetinol: 0.5,Calories: 122],Calories: 140]
]

如何在Swift中有效地做到这一点?请帮忙!

解决方法

let sorted = ListOfAlimentClassed.sorted { (($0.1[Calories] as? Double) ?? 0) < (($1.1[Calories] as? Double) ?? 0) }
,

为您的数据创建一个结构,并为其使用数组

struct Aliment {
    let name: String
    let vitamineARetinol: Double
    let vitaminC: Double
    let vitaminD: Double
    let calories: Double
}

var array = [
    Aliment(name: "Orange",vitamineARetinol: 0.5,vitaminC: 0.3,vitaminD: 0.98,calories: 100),Aliment(name: "Pomme",vitamineARetinol: 0.2,vitaminC: 0.2,vitaminD: 0.38,calories: 120),]

array.sort(by: { $0.calories < $1.calories })

Swift Programming Language书中阅读有关结构的更多信息

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...