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};

你可能感兴趣的:(Swift4语法,Swift,进阶知识包)