Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 在包含自定义类的数组中查找值_Arrays_Swift - Fatal编程技术网

Arrays 在包含自定义类的数组中查找值

Arrays 在包含自定义类的数组中查找值,arrays,swift,Arrays,Swift,我试图在包含结构的数组中找到值的位置。 我的数组看起来像这样 struct User { var firstName: String? var lastName: String? } var allThePeople = [User(firstName: "John", lastName: "Doe"), User(firstName: "Jane", lastName: "Doe"), User(firstName: "John", lastName: "Travolta")]; 有没有办

我试图在包含结构的数组中找到值的位置。 我的数组看起来像这样

struct User {
var firstName: String?
var lastName: String?
}

var allThePeople = [User(firstName: "John", lastName: "Doe"), User(firstName: "Jane", lastName: "Doe"), User(firstName: "John", lastName: "Travolta")];

有没有办法获得数组中所有“Doe”的位置?(在本例中为0和1)

您可以筛选
所有人
,条件是获取所有姓氏为“Doe”的人

您可以枚举数组并将其平面映射到索引数组

let allTheDoeIndexes = allThePeople.enumerated().flatMap { $0.element.lastName == "Doe" ? $0.offset : nil }
                     = allThePeople.enumerated().flatMap { $1.lastName == "Doe" ? $0 : nil }

您可以过滤
所有人
,条件是获取所有姓氏为“Doe”的人

您可以枚举数组并将其平面映射到索引数组

let allTheDoeIndexes = allThePeople.enumerated().flatMap { $0.element.lastName == "Doe" ? $0.offset : nil }
                     = allThePeople.enumerated().flatMap { $1.lastName == "Doe" ? $0 : nil }

如果需要实际的索引,请使用

struct User {
    var firstName: String?
    var lastName: String?
}

var allThePeople = [User(firstName: "John", lastName: "Doe"), User(firstName: "Jane", lastName: "Doe"), User(firstName: "John", lastName: "Travolta")]

var indices = [Int]()
for i in 0 ..< allThePeople.count {
    if allThePeople[i].lastName == "Doe" {
        indices.append(i)
    }
}
indices // [0,1]
struct用户{
var firstName:String?
var lastName:String?
}
var allThePeople=[用户(名字:“约翰”,名字:“Doe”),用户(名字:“简”,名字:“Doe”),用户(名字:“约翰”,名字:“特拉沃尔塔”)]
var指数=[Int]()
对于0中的i..

否则,按照@Callam的建议使用
过滤器。

如果需要实际索引,请使用

struct User {
    var firstName: String?
    var lastName: String?
}

var allThePeople = [User(firstName: "John", lastName: "Doe"), User(firstName: "Jane", lastName: "Doe"), User(firstName: "John", lastName: "Travolta")]

var indices = [Int]()
for i in 0 ..< allThePeople.count {
    if allThePeople[i].lastName == "Doe" {
        indices.append(i)
    }
}
indices // [0,1]
struct用户{
var firstName:String?
var lastName:String?
}
var allThePeople=[用户(名字:“约翰”,名字:“Doe”),用户(名字:“简”,名字:“Doe”),用户(名字:“约翰”,名字:“特拉沃尔塔”)]
var指数=[Int]()
对于0中的i..

否则,按照@Callam的建议使用
filter

您想要筛选数组或条件索引?您想要筛选数组或条件索引?闭包可以稍微缩短为
{$1.lastName==“Doe”?$0:nil}<代码>也许是一个味觉的问题。你的<代码>平面图<代码>比<<代码>对于循环答案(我赞成你)更为简洁——但是对于新手来说可能太简洁了——考虑添加一点解释吗?我可以添加更多的过滤器吗?假设我想找到所有姓氏Doe和姓氏John的名字的索引?是的,你可以这样做
allThePeople.enumerated().flatMap{$1.firstname==“John”&&&$1.lastname==“Doe”?$0:nil}
闭包可以稍微缩短为
{$1.lastname==“Doe”?$0:nil}<代码>也许是一个味觉的问题。你的<代码>平面图<代码>比<<代码>对于循环答案(我赞成你)更为简洁——但是对于新手来说可能太简洁了——考虑添加一点解释吗?我可以添加更多的过滤器吗?假设我想找到所有姓氏Doe和姓氏John的名字的索引?是的,你可以这样做
allThePeople.enumerated().flatMap{$1.firstname==“John”&&&$1.lastname==“Doe”?$0:nil}