swift 数组 filter reduce sort 等方法

数组的常用方法

swift 数组有很多的操作方法,但是用的时候用常常想不起来,就列出来看看

map 和 flatMap对数组中的元素进行变形操作
filter主要对数组进行过滤
reduce主要对数组进行计算
sort对数组进行排序
forEach循环遍历每一个元素
min 和 max找出数组中最大元素和最小的元素
drop丢弃元素
contains元素是否符合某个条件
index索引
first 和 last开始和末尾
let array1 = ["1","2","3","4","5"];

// 1 普通遍历操作
for  i in array1 {
    print(i);
}


// 2 迭代除了第一个元素之外的所有元素
for i in array1.dropFirst(){
      print(i);
}

// 3 迭代除了最后N个元素之外的所有元素
for i in array1.dropLast(2){
    print(i);
}

// 4 寻找一个指定的元素第一个索引
array1.firstIndex(of: "1");

// 5 筛选出符合某种标准的元素的索引
// filter 是一个高阶函数 因为其本身可以接受函数作为参数 所以称之为高阶函数
// 返回值是一个符合筛选条件的数组

// 找出数组中 大于 2 的元素
let resArr1 = array1.filter { (str) -> Bool in
    return Int(str)! > 2;
}

// 简化的写法是 直接在闭包当中书写判断的表达式
let resArr2 = array1.filter{ Int($0)! > 2 }


// ["3", "4", "5"]
print(resArr1);
print(resArr2);

// 6 filter 的用法
let array2 = ["apple","banana","watermelon","orange"];

// 筛选出字符小于6的元素
let res3 = array2.filter{ $0.count > 6};
// 筛选出字符包含p的元素
let res4 = array2.filter{ $0.contains("p")};

// ["watermelon"]
print(res3);
// ["apple"]
print(res4);



// 7 map 对数组中的元素进行变形操作
let array3 = [2,5,8];
// 对每一个元素+5操作
let res5 = array3.map { (idx) -> Int in
    return idx + 5;
}

// 简化的操操作
let res6 = array3.map{idx in idx + 10};


// [7, 10, 13]
print(res5);
// [12, 15, 18]
print(res6);


// 8 reduce 操作

let array4 = [1,2,3,4,5];

// 8.1 计算数组之和
let red_res1 = array4.reduce(10){
    // $0 代表计算后的结果
    // $1 代表单个的元素
    // 10 代表 $0 = 10
    $0 + $1;
};

// 25
print(red_res1);

// 8.2 另外一种形式的计算
let total_count = array4.reduce(0){(x,y) -> Int in
    
    return x + y;
}

print(total_count);


// 9 sort 排序方法
// 进行大小的结果排序
let array5 = [5,8,2,15];
let sort_res1 =  array5.sorted(){
    $0 < $1;
}

let sort_res2 =  array5.sorted{$0 < $1}

//[2, 5, 8, 15]
print(sort_res1);
print(sort_res2);


// 10  获取数组中的最大值 最小值

print(array5.max() as! Int);
print(array5.min() as! Int);

// 11 forEach 循环遍历每一个元素
array5.forEach { (idx) in
    print(idx);
}


// 12 contains 元素是否符合某个条件
// 判断数组中是否有大于5的元素
array5.contains{$0 > 5};
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值