【问题标题】:Swift Append every second item to ArraySwift将每隔一个项目附加到数组
【发布时间】:2015-10-11 19:53:04
【问题描述】:

我有一个快速数组“Monthdata”,我想在我的月份数组中添加每个第二个值。

var monthData = []
let months = ["Jul 12","Aug 12","Sep 12","Oct 12"]

for month in months {
 self.monthData.append(month)
}

所以基本上我的monthData数组看起来像:

["Aug 12","Oct 12"]

【问题讨论】:

    标签: ios arrays swift append enumeration


    【解决方案1】:

    尝试使用模运算符( % )

    var monthData = Array<String>()
    let months = ["Jul 12","Aug 12","Sep 12","Oct 12"]
    
    var i : Int = 1
    
    for month in months{
        if(i%2 == 0){
            monthData.append(month)
        }
        i = i + 1
    }
    
    println(monthData)
    

    输出:

    [8 月 12 日,10 月 12 日]

    【讨论】:

      【解决方案2】:

      也可以使用swift数组filter方法获取过滤后的数组,

      monthData = months.filter{ (dataValue) in (find(months, dataValue)! % 2 != 0) }
      

      【讨论】:

        【解决方案3】:

        Swift 3(基于@maxkonovalov 的回答)

        let array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
        let step = 2
        let filtered = array.enumerated().flatMap { $0.offset % step == 0 ? $0.element : nil }
        
        // filtered: ["0", "2", "4", "6", "8"]
        

        【讨论】:

          【解决方案4】:

          有一个更紧凑的版本可以按元素的索引过滤数组。

          如何查找数组中每个第 N 个元素的示例(swift 2.0):

          let array = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
          let n = 2
          let filteredArray =  array.enumerate().flatMap { $0.index % n == 0 ? $0.element : nil }
          
          // filteredArray = ["0", "2", "4", "6", "8"]
          

          【讨论】:

            【解决方案5】:

            要解决这个问题,您可以使用Strides 类和map method

            let months = ["Jul 12","Aug 12","Sep 12","Oct 12"]
            let monthData = stride(from: 1, to: months.count, by: 2).map { (value:Int) -> String in
                return months[value]
            }
            print(monthData)
            

            【讨论】:

              猜你喜欢
              • 2017-05-15
              • 2017-08-04
              • 2020-12-02
              • 1970-01-01
              • 1970-01-01
              • 2020-10-30
              • 1970-01-01
              • 2016-01-16
              • 1970-01-01
              相关资源
              最近更新 更多