arrays - 在数组中搜索一个值 [swift]
问题描述
刚开始快速学习,花了几个小时试图通过在这里搜索来解决这个问题,但到目前为止还没有运气。
我有一个数组,创建如下:
class ProbabilitiesClass {
var list = [Odds]()
init() {
list.append(Odds(dateInit: -35, oddsTodayInit: "0,01", sevenDaysInit: "0,2"))
list.append(Odds(dateInit: -34, oddsTodayInit: "0,01", sevenDaysInit: "0,3"))
list.append(Odds(dateInit: -33, oddsTodayInit: "0,02", sevenDaysInit: "0,4"))
我想在这个数组的第一个参数中搜索一个整数并返回它的索引。
试过这个
if let i = Odds.firstIndex(where: { $0.hasPrefix(differenceInDays) }) {
print("index is \([i])")
}
它返回错误:
类型“赔率”没有成员“firstIndex”
最终目标是返回该索引的第二个和第三个参数。
更新:我这样定义赔率:
import Foundation
class Odds {
let dateText : Int
let oddsToday : String
let odds7Days : String
init(dateInit: Int, oddsTodayInit: String, sevenDaysInit : String) {
dateText = dateInit
oddsToday = oddsTodayInit
odds7Days = sevenDaysInit
}
}
解决方案
你可以这样做:
let p = ProbabilitiesClass()
let differenceInDays = -34
if let i = p.list.firstIndex(where: { $0.dateText == differenceInDays }) {
print("index is \([i])") //index is [1]
}
list
在的实例的属性中查找索引ProbabilitiesClass
。就像错误消息说的那样:该类Odds
不是使用该方法的数组firstIndex(where:)
。
如果你想使用第一个dateInit
等于的元素的属性differenceInDays
,那么你可以这样做:
if let first = p.list.first(where: { $0.dateText == differenceInDays }) {
print("oddsTodayInit =", first.oddsToday)
print("sevenDaysInit =", first.odds7Days)
}
它使用这个功能first(where:)
。
推荐阅读
- php - 尝试将 URL 参数获取到 Laravel 中的控制器时不断获取 null
- c# - 构造函数重载隐藏 PowerShell 中的属性
- nginx - 如何在 debian 上找到并安装根 ssl 证书?
- python - 我使用 jsonify 和烧瓶和 python 3 制作的这个 JSON 格式是否正确以制作 D3 图?如果没有,我应该如何格式化它?
- anylogic - 如何从人群中选择随机代理并给每个人一个随机值?
- excel - 在 vba 中将多个值设置为数据透视表过滤条件
- python - 带有额外参数的 Celery 自定义任务
- java - 应用程序重启
- python - 如何根据python中的同一列数据创建数据框并合并2个数据框
- unit-testing - 如何在 redux 中使用 renderHook