arrays - 如何过滤掉数组的数组

标签 arrays swift

您好,我有一个包含多个值的数组,我想尝试过滤掉搜索栏的索引。一个英语术语的例子就像。给我名称“Name2”的索引,并通过检查每个索引的第一个值中的所有字符串来执行此操作。

代码:

 // Multiple Errors 

 var receivedList = [["Name1","Apple","Fresh"],["Name2","Orange","Rotten"],["Name3","Pear","Fresh"],["Name4","Grape","Rotten"]]


 filteredData = data.filter({$0 == searchBar.text})
 filteredData = receivedList.filter({$0 receivedList[1] == searchBar.Text})


 //Im not really sure how to use this or if it's even useful 

 let searchPredicate = NSPredicate(format: "Orange CONTAINS[C] %@", searchText)

 let array = (receivedList as NSArray).filtered(using: searchPredicate)

我在这里查看了这些页面。

filtering-array-of-dictionaries-in-swift

swift-filter-dictionary

filter-array-of-objects-with-multiple-criteria-and-types-in-swift

还有其他几个,运气不好

最佳答案

如果我没看错问题,你想找到第一个元素与搜索模式匹配的数组的索引。下面演示了如何做到这一点:

var receivedList = [["Name1","Apple","Fresh"],["Name2","Orange","Rotten"],["Name3","Pear","Fresh"],["Name4","Grape","Rotten"]]
var searchText = "Name2"

let index = receivedList.index { $0[0] == searchText }

print(index)

以下将过滤您的列表,使其仅包含第一个元素包含搜索文本的列表:

let matches = receivedList.filter { $0[0].contains(searchText) }

如果你想要匹配的索引,那么你可以使用:

let matches = receivedList
    .enumerated()
    .filter { $0.1[0].contains(searchText) }
    .map { $0.0 }

关于arrays - 如何过滤掉数组的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47026624/

相关文章:

javascript - 如何在javascript中创建一个仅包含特定位置元素的数组?

arrays - 将数组传递到 JSON 文件中的每个对象。 (过程 JSON SAS)

swift - 如何在 Playgrounds 中设置 ViewController?

ios - 将一个 Sprite 保留在屏幕内,但让其他 Sprite 离开

java - 如何将 Vector 更改为 ArrayList?

javascript - 在 django 中获取 javascript 数组

arrays - 为数组中的每个其他索引分配值

iOS Playground 不显示 UI 预览

ios - 无法将数据从一个 View Controller 推送到 TableView Controller

ios - 支持 iOS6 到 9 的后台位置更新