Array Methods.md

Array Methods

find/findIndex/includes

  1. array.find是一个高阶函数, 会返回匹配回调函数内符合的第一个元素。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var arr = [{a: 1}, {a: 2}, {a: 3}];

    arr.find(function match(v){
    return v && v.a > 1;
    });
    // {a: 2}
    // 条件不符合的时候返回undefined

    arr.findIndex(function match(v) {
    return v && v.a > 10;
    }); // -1
  2. includes 运算符
    1
    2
    3
    4
    5
    var arr = [10, 20, NaN];

    arr.includes(10);

    arr.includes(NaN);

flat & flatMap

  1. Array.flat: flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。

depth 可选: 指定要提取嵌套数组的结构深度,默认值为 1。

使用flat函数会移除所有的空项 [1, 2, 3, , 5] => [1, 2, 3, 5]

1
2
3
[1, 2, 3, [4, 5, [6, 7]]].flat(); // 默认展开的层级是1
[1, 2, 3, [4, 5, [6, 7]]].flat(2); // 这样就是完全展开
[1, 2, 3, [4, 5, [6, 7]]].flat(Infinity); // 这样就是完全展开
  1. Array.flatMap: flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 和 深度值1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。

简而言之, 用cb处理数组, 再把数组扁平化

1
2
3
4
5
6
7
let arr = ["今天天气不错", "", "早上好"]

arr.map(s => s.split(""))
// [["今", "天", "天", "气", "不", "错"],[""],["早", "上", "好"]]

arr.flatMap(s => s.split(''));
// ["今", "天", "天", "气", "不", "错", "", "早", "上", "好"]