我需要比较两个包含名称列表和所选索引列表的数组。我需要得到另一个数组,其名称只有给定的索引。怎么能实现这个?
我正在尝试使用foreach
,但我获得了双倍的值。
let selectedIndices = [1, 3, 7, 10]
let namesArray = ["aaa", "bbb", "ccc", "ddd", "eee", "fff", "ggg", "hhh", "jjj", "kkk", "lll", "mmm"]
finalArray = ["bbb", "ddd", "hhh", "lll"]
答案 0 :(得分:0)
有一个名为indices
的属性,可以访问数组的每个当前索引。然后,您只需检查第二个数组是否包含索引,然后返回其值。 (这两个例子都是默认的,只是偏好问题。)
let filterArray = namesArray.indices.flatMap({ index -> String? in
if selectedIndices.contains(index) {
return namesArray[index]
}
return nil
})
或
let filteredArray = namesArray.indices.flatMap({ return selectedIndices.contains($0) ? namesArray[$0] : nil })
print(filteredArray) // ["bbb", "ddd", "hhh", "lll"]
答案 1 :(得分:0)
使用map
:
finalArray = selectedIndices.map{namesArray[$0]}