美文网首页
Swift Array replaceSubrange(_:wi

Swift Array replaceSubrange(_:wi

作者: 微风_10a5 | 来源:发表于2022-10-17 13:35 被阅读0次
    • 实例方法
      replaceSubrange(_:with:)
      用指定集合中的元素替换一系列元素。

    • 详述
      此方法具有从数组中删除指定范围的元素并将新元素插入相同位置的效果。新元素的数量不必与要移除的元素的数量相匹配。如下:

    var nums = [10, 20, 30, 40, 50]
     nums.replaceSubrange(1...3, with: repeatElement(1, count: 5))
     print(nums)
     // Prints "[10, 1, 1, 1, 1, 1, 50]"
    
    • 注意点:如果您将零长度范围作为 subrange 参数传递,此方法会在 subrange.startIndex 处插入 newElements 的元素。最好调用 insert(contentsOf:at:) 方法。

    • 同样,如果您将零长度集合作为newElements 参数传递,则此方法将删除给定子范围中的元素而不进行替换。最好调用removeSubrange(_:) 方法。

    但在实际项目中,可能使用的情况较上面更为复杂

    因为 subrange的startIndex,有可能是需要查找出来的,或者是满足某种条件元素的startIndex

            var array = [1,2,3,4,5,6,5,4,3,2,1]
            var findIndex = array.firstIndex(where: { (e) -> Bool in
                return (e == 3)
            })
            print(findIndex)  //2
    
    
            let array_new = [100,99]
            array.replaceSubrange(findIndex!..<(findIndex!+1), with: array_new)
            print(array)  //[1,2,100,99,4,5,6,5,4,3,2,1]
    

    如上面:先要找出第一次出现数字3的 startIndex, 然后再组成 subrange--->
    findIndex!..<(findIndex!+1),也就是要替换这个subrange,在上面的实例中,就是要替换第一次出现的数字3,

    项目中实例:替换模型数组里面的元素

    第一步:新建一个model
    import UIKit
    
    class Student: NSObject {
       
       var name: String = ""
       var score: Double = 0.0
       init(name: String, score: Double) {
           self.name = name
           self.score = score
       }
    }
    
    第二步:实例代码
            let s1 = Student(name: "zhang san", score: 64.0)
            let s2 = Student(name: "wang wu", score: 90.0)
            let s3 = Student(name: "li si", score: 57.0)
            let s4 = Student(name: "zhao liu", score: 69.0)
            var array = [s1,s2,s3,s4]
    
    
            //现在的需求是找出score 小于60.0分的同学出来,把他score分数替换为60.0分
    
            let newStudent = Student(name: "wang wei", score: 60.0)
            let replaceArray = [newStudent]
            
            let firstIndex =  array.firstIndex { student in
                return student.score < 60.0
            }
            print("firstIndex = \(String(describing: firstIndex))")
            
            if let firstIndex = firstIndex {
                array.replaceSubrange(firstIndex..<(firstIndex+1), with: replaceArray)
                print("array is: \(array)")
            }
    
    

    结果如下:

    image.png

    结尾

    今天iOS 相关技术的分享就到这里喽,小伴们,觉得有点用的话,或者已经看到这里面来的请点个赞吧~~ 后续分享更多有关iOS的文章。如果有疑问的话,请在下方留言~

    相关文章

      网友评论

          本文标题:Swift Array replaceSubrange(_:wi

          本文链接:https://www.haomeiwen.com/subject/qbwrzrtx.html