在结构中过滤struct数组(代码片段)

author author     2023-05-13     502

关键词:

假设您有一系列Car structs,其中包含了一系列以前的所有者。

struct Car 
   var model: String // Ford Taurus
   var owners: [Owner]


struct Owner 
   var name: String // Harrison Ford
   var location: String // Oxford

当人们搜索“福特”时,我想检查汽车模型以及“福特”这个词的所有者名称和位置。我知道如何过滤Car模型,但不知道所有者属性。

let filteredCars = cars.filter  (car) -> Bool in
            return car.model.lowercased().contains(textToSearch.lowercased())
        

如何过滤所有者属性?

答案

使用or进行双重过滤,对于所有者我在搜索之前加入了两个属性,因为哪个匹配并不重要

let searchKey = "Ford".lowercased()
let selected = cars.filter(
    $0.model.lowercased().contains(searchKey) ||
    $0.owners.contains(where: "($0.name) ($0.location)".lowercased().contains(searchKey)))
另一答案

你需要

let filteredCars = cars.filter 
    return $0.model.lowercased().contains(textToSearch.lowercased()) ||
           !$0.owners.filter  $0.name.lowercased().contains(textToSearch.lowercased()).isEmpty


另一答案

首先,每次迭代转换为小写的两次转换效率不高。

更好地使用range(of与选项.caseInsensitive

let filteredCars = cars.filter  (car) -> Bool in
    return car.model.range(of: textToSearch, options: .caseInsensitive) != nil ||
    !car.owners.filter("($0.name) ($0.location)".range(of: textToSearch, options: .caseInsensitive) != nil).isEmpty

结构体(代码片段)

...同,显然不能用一个数组来存放。在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:struct结构体名  结构体所包含的变量或数组;结构体是 查看详情

在 MATLAB 元胞数组中查找和过滤元素

...时间】:2011-03-2814:04:01【问题描述】:我有一个具有如下结构的元素列表(元胞数组):mystruct=struct(\'x\',\'foo\',\'y\',\'bar\',\'s\',struct(\'text\',\'Pickabo\'));mylist=mystruc 查看详情

在 Bigquery 中,如何使用标准 Sql 过滤 Struct 数组以匹配 Struct 中的多个字段?

】在Bigquery中,如何使用标准Sql过滤Struct数组以匹配Struct中的多个字段?【英文标题】:InBiqquery,howtofilteranarrayofStructonmatchingmultiplefieldsintheStructusingStandardSql?【发布时间】:2017-06-2821:11:29【问题描述】:这是表的记录布局(load_histo... 查看详情

如何在struct数组中找到最大值(代码片段)

我有一个看起来像这样的结构:data.indexdata.xdata.y它有1到100个元素,我可以用data(Window_Size).y(或其他)访问。我想要做的是独立地比较所有x值和所有y值,以获得maxX,maxY,minX和minY。我试过这样的事MaxX=max(data(:).x);但这似乎不起... 查看详情

通过特定映射过滤 2 个结构/数组

】通过特定映射过滤2个结构/数组【英文标题】:Filter2struct/arraysbymappingbyspecific【发布时间】:2017-07-1716:21:21【问题描述】:我是使用swift3和xcode8.3的新用户。目前在控制台输出中面临过滤2数组/结构的问题,如下所示:A_List:Optio... 查看详情

golang入门:结构体(struct)(代码片段)

Go通过类型别名(aliastypes)和结构体的形式支持用户自定义类型,或者叫定制类型。试图表示一个现实世界中的实体。结构体由一系列命名的元素组成,这些元素又被称为字段,每个字段都有一个名称和一个类型。结构体的目的就... 查看详情

从零开发区块链应用--结构体初识(代码片段)

文章目录一、结构体定义二、初始化结构体三、结构体的访问四、结构体指针五、结构体可见性六、结构体标签七、结构体嵌套八、结构体方法九、结构体特性Go语言中提供了对struct的支持,struct,中文翻译称为结构体,与数组... 查看详情

结构体中定义函数指针(代码片段)

 结构体指针变量的定义定义结构体变量的一般形式如下:形式1:先定义结构体类型,再定义变量struct结构体标识符  成员变量列表;…;struct结构体标识符*指针变量名;变量初始化:struct结构体标识符变量名=初始化值1,初... 查看详情

go语言中struct结构体的使用(代码片段)

一、struct的特点1、用来自定义复杂数据结构2、struct里面可以包含多个字段(属性)3、struct类型可以定义方法,注意和函数的区分4、struct类型是值类型5、struct类型可以嵌套6、GO语言没有class类型,只有struct类型二、struct的定义1... 查看详情

golang中结构体struct(代码片段)

...变量、类型Golang学习,指针,循环控制相关循环结构控制、包函数的使用异常处理、数组老奶奶可以看懂的切片老奶奶可以看懂系列之—Golang的Map映射结构体Struct面向对象Golang与Java面向对象区别Struct使用Struct介绍Struct结... 查看详情

golang中结构体struct(代码片段)

...变量、类型Golang学习,指针,循环控制相关循环结构控制、包函数的使用异常处理、数组老奶奶可以看懂的切片老奶奶可以看懂系列之—Golang的Map映射结构体Struct面向对象Golang与Java面向对象区别Struct使用Struct介绍Struct结... 查看详情

使用 struct 在 Go 中处理空 JSON 数组

...有struct并获得null。用我在golang中的部分代码找到下面的结构。typeXmloutRoomRatestructCancellationPolicyPolicies`bson:"cancel 查看详情

结构体(代码片段)

...而其它方面差异很小。这里主要讲与算法竞赛可能用上的结构体初始化和运算符重载(大佬请直接忽略) 结构体初始化类的构造函数是类的一种 查看详情

go基础系列:struct和嵌套struct(代码片段)

structstruct定义结构,结构由字段(field)组成,每个field都有所属数据类型,在一个struct中,每个字段名都必须唯一。说白了就是拿来存储数据的,只不过可自定义化的程度很高,用法很灵活,Go中不少功能依赖于结构,就这样一个... 查看详情

swift-将struct数组传递给另一个struct的init(代码片段)

如何初始化包含另一个结构数组的结构?我想创建一个Invoice条目,其中包含所有属性和具有InvoiceItem数组的项目。此外,当发票仍为草稿时,项目可以为空。使用发票数据和项目从服务器读取JSON响应正常。关于viewcontroller的保存... 查看详情

使用 MPI_Type_create_struct() 在 C 中传输包含动态数组的结构

】使用MPI_Type_create_struct()在C中传输包含动态数组的结构【英文标题】:UsingMPI_Type_create_struct()totransferstructscontainingdynamicarraysinC【发布时间】:2017-05-0416:18:53【问题描述】:概述:我正在测试我使用MPI_Type_create_struct()创建的数据... 查看详情

继承复习-go(代码片段)

继承通过在结构体中嵌套实现继承,且继承的只是结构体的属性,若要继承方法可以通过实现接口达成接口多态在golang中interface相当于类,struct相当于对象,当struct重写了interface的方法就是struct继承了interface类的... 查看详情

html在javascript和打印结果中过滤对象数组(代码片段)

查看详情