You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Swift中用map和filter将指定Int索引数组转为对应String数组?

Swift中用map和filter实现索引映射字符串数组的方案

首先定义题目中给出的字符串数组:

var arrayOfStrings: [String] = ["apple", "banana", "orange"]

方式一:先过滤有效索引再映射

这种方式先处理传入的索引数组,剔除掉超出字符串数组范围的无效值,再通过map将有效索引映射为对应的字符串,适合需要保留传入索引顺序的场景:

func selectedStrings(from indices: [Int]) -> [String] {
    // 过滤出在字符串数组合法范围内的*有效索引*
    let validIndices = indices.filter { $0 >= 0 && $0 < arrayOfStrings.count }
    // 将有效索引映射为对应的字符串元素
    return validIndices.map { arrayOfStrings[$0] }
}

// 调用示例
let result1 = selectedStrings(from: [0, 1])
print(result1) // 输出 ["apple", "banana"]

// 处理含无效索引的情况
let result2 = selectedStrings(from: [0, 3, 1])
print(result2) // 输出 ["apple", "banana"]

方式二:遍历原数组筛选目标索引

这种方式通过enumerated()遍历原字符串数组的索引和元素,用filter筛选出索引在传入集合中的元素,再用map提取出字符串,适合需要保持原字符串数组元素顺序的场景(即使传入的索引是乱序的):

func selectedStrings(from indices: [Int]) -> [String] {
    return arrayOfStrings.enumerated()
        // 筛选出索引存在于传入数组中的元素
        .filter { indices.contains($0.offset) }
        // 将枚举对象映射为对应的字符串元素
        .map { $0.element }
}

// 调用示例
let result3 = selectedStrings(from: [1, 0])
print(result3) // 输出 ["apple", "banana"](保持原数组顺序)

内容的提问来源于stack exchange,提问作者stefanosn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 21:52:13