如何在下面的二维数组中搜索“墨西哥”值?
// this is our array of arrays
var groups = [[String]]()
// we create three simple string arrays for testing
var groupA = ["England", "Ireland", "Scotland", "Wales"]
var groupB = ["Canada", "Mexico", "United States"]
var groupC = ["China", "Japan", "South Korea"]
// then add them all to the "groups" array
groups.append(groupA)
groups.append(groupB)
groups.append(groupC)
答案 0 :(得分:2)
这是我实现的函数,该函数检查多维数组中是否列出了元素,并返回找到的总元素:
使用.filter(_ :)返回基于谓词允许的元素。
import UIKit
var groups = [[String]]()
// we create three simple string arrays for testing
var groupA = ["England", "Ireland", "Scotland", "Wales"]
var groupB = ["Canada", "Mexico", "United States"]
var groupC = ["China", "Japan", "South Korea"]
// then add them all to the "groups" array
groups.append(groupA)
groups.append(groupB)
groups.append(groupC)
func findElementInMultiDimension(element: String) -> Int {
var count = 0
let _ = groups.flatMap{$0.filter { (item) -> Bool in
if item.contains(element) {
count = count + 1
return true
} else {
return false
}
}}
return count
}
findElementInMultiDimension(element: "Mexico")
print(findElementInMultiDimension(element: "Mexico")) //prints 1
希望这会有所帮助:)
答案 1 :(得分:1)
使用 filter(_:)
和 contains(_:)
获得group
groups
中特定的array
包含Mexico
或其他任何值,即
let searchText = "Mexico"
let group = groups.filter({ $0.contains(searchText) })
如果只想对组中是否存在“墨西哥”进行判断,则可以使用 flatMap(_:)
和 contains(_:)
,即
let contains = groups.flatMap({ $0 }).contains(searchText)
答案 2 :(得分:0)
不清楚是要返回数组还是返回布尔值(如果存在字符串)。由于人们已经回答了如何获取结果数组,因此,如果您要搜索2D数组中是否存在该单词并返回Bool,则可以采用以下解决方案。
let searchText = "Mexico"
let result = groups.reduce(false) { (_, group) -> Bool in
group.contains(searchText)
}
print(result) // true