You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何过滤SolarElevationArray数组以显示指定天数的元素?

过滤SolarElevationArray数组的正确语法

你需要过滤存储特定地点全年每小时太阳高度数据的数组,仅保留day等于123的元素,相关定义如下:

结构体定义

struct SolarElevationArray: Identifiable {
    var id = UUID().uuidString
    var day: Int
    var hour: Int
    var date: Date
    var elevation: Double
    var animate: Bool = false
}

数组声明

@State var solarElevation: [SolarElevationArray] = solarElevationDates
static var solarElevationDates : [SolarElevationArray] = []

原展示所有数据的正确写法

ForEach(solarElevation) {item in
    LineMark(
        x: 
        y: 
        series: 
    ) 
}

你当前尝试的写法存在错误:

ForEach(solarElevation.filter { solarElevation.day.contains(Int: 123)}) {item in

正确过滤写法

你需要在filter闭包中访问数组单个元素的day属性,直接判断是否等于123即可,有两种写法可选:

简洁写法(使用$0指代闭包参数)

ForEach(solarElevation.filter { $0.day == 123 }) { item in
    LineMark(
        x: 
        y: 
        series: 
    ) 
}

可读性更强的写法(显式命名闭包参数)

ForEach(solarElevation.filter { element in
    element.day == 123
}) { item in
    LineMark(
        x: 
        y: 
        series: 
    ) 
}

错误原因说明

  • 原写法中solarElevation.day是错误的:solarElevation是数组本身,没有day属性,闭包参数对应数组的单个元素,需通过闭包参数($0或命名参数)访问元素的day属性。
  • contains(Int: 123)用法错误:此处不需要用contains方法,直接判断元素的day值是否等于目标数值即可。

内容的提问来源于stack exchange,提问作者Edward Hasted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:42:52