博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Swift]Array(数组)扩展
阅读量:5329 次
发布时间:2019-06-14

本文共 2078 字,大约阅读时间需要 6 分钟。

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝()
➤GitHub地址:
➤原文地址: 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

扩展Array

1 extension Array where Element : Equatable {     2     //获取数组中的指定元素的索引值 3     //Parameter item: 元素 4     //Returns: 索引值数组 5     public func indexes(_ item: Element) -> [Int] { 6         var indexes = [Int]() 7         for index in 0..
Int? {17 for (index, value) in lazy.enumerated() where value == item {18 return index19 }20 return nil21 } 22 23 //获取元素最后出现的位置24 //Parameter item: 元素25 //Returns: 索引值26 public func lastIndex(_ item: Element) -> Int? {27 return indexes(item).last28 }29 30 //删除数组中的指定元素31 //Parameter object: 元素32 public mutating func remove(_ object:Element) -> Void {33 for idx in self.indexes(object).reversed() {34 self.remove(at: idx)35 }36 }37 }

测试代码:

1 var arr:[Int] = [1,2,3,4,5,5,6,7,7,8,9,10]2 print(arr.firstIndex(5))3 //Prnt Optional(4)4 print(arr.lastIndex(7))5 //Prnt Optional(8)6 arr.remove(7)7 print(arr)8 //Prnt [1, 2, 3, 4, 5, 5, 6, 8, 9, 10]

 扩展数组,二分法插入:

1 private extension Array where Element: Comparable { 2     private func binarySearchIndex(for element: Element) -> Int { 3         var min = 0 4         var max = count 5         while min < max { 6             let index = (min+max)/2 7             let other = self[index] 8             if other == element { 9                 return index10             } else if other < element {11                 min = index+112             } else {13                 max = index14             }15         }16         return min17     }18     19     mutating func binaryInsert(_ element: Element) {20         insert(element, at: binarySearchIndex(for: element))21     }22 }

测试代码:

1 var arr:[Int] = [1,2,3,4,5,6,7,8,9]2 arr.binaryInsert(5)3 print(arr)4 //Print [1, 2, 3, 4, 5, 5, 6, 7, 8, 9]

 

转载于:https://www.cnblogs.com/strengthen/p/10403543.html

你可能感兴趣的文章
CDH版本大数据集群下搭建的Hue详细启动步骤(图文详解)
查看>>
巧用Win+R
查看>>
浅析原生js模仿addclass和removeclass
查看>>
Python中的greenlet包实现并发编程的入门教程
查看>>
java中遍历属性字段及值(常见方法)
查看>>
深入理解jQuery框架-框架结构
查看>>
YUI3自动加载树实现
查看>>
python知识思维导图
查看>>
当心JavaScript奇葩的逗号表达式
查看>>
App Store最新审核指南(2015年3月更新版)
查看>>
织梦MIP文章内容页图片适配百度MIP规范
查看>>
[Kali_BT]通过低版本SerialPort蓝牙渗透功能手机
查看>>
C语言学习总结(三) 复杂类型
查看>>
HNOI2018
查看>>
【理财】关于理财的网站
查看>>
Ubunt中文乱码
查看>>
《当幸福来敲门》读后
查看>>
【转】系统无法进入睡眠模式解决办法
查看>>
省市县,循环组装,整合大数组
查看>>
stm32中字节对齐问题(__align(n),__packed用法)
查看>>