【问题标题】:I want to remove out Strings from an Array我想从数组中删除字符串
【发布时间】:2022-01-01 16:01:45
【问题描述】:

这是我的代码

func filterString(array:[Any])-> [Int]{
    
    return array.remove(String)
    
    
}

【问题讨论】:

标签: arrays swift any


【解决方案1】:
func filterString(array:[Any])-> [Any]{
        var finalArr : [Any] = []
        for i in array{
            if i is String.Type == false{
                finalArr.append(i)
            }
        }
        return finalArr
    }

【讨论】:

  • 感谢您提供答案。您能否编辑您的答案以包括对您的代码的解释?这将有助于未来的读者更好地了解正在发生的事情,尤其是那些刚接触该语言并难以理解概念的社区成员。
【解决方案2】:

一个简单的过滤器就足够了

var arr: [Any] = ["", "", 1, 2.5]
print(arr.filter({ $0 is Int }))
// print [1]

这将返回您在代码中搜索的 Int 数组。但您也可以过滤仅删除字符串,保持其余部分完好无损:

var arr: [Any] = ["", "", 1, 2.5]
print(arr.filter({ !($0 is String) }))
// print [1, 2.5]

还有你的功能:

func filterString(array: [Any]) -> [Int]{
    array.filter { $0 is Int } as? [Int] ?? []
}

【讨论】:

    【解决方案3】:

    差不多

    var array : [Any] = [1, "one", 2, "two", 3, "three"]
    array.removeAll(where: {$0 is String})
    

    或者使用你的函数,你必须删除所有不是Int的东西

    func filterString(array: [Any]) -> [Int]{
        var temp = array
        temp.removeAll(where: {$0 is Int == false})
        return temp as! [Int]
    }
    

    另一种方式是compactMap

    func filterString(array: [Any]) -> [Int]{
        return array.compactMap{$0 as? Int}
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-09
      • 1970-01-01
      • 2012-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2013-03-02
      相关资源
      最近更新 更多