陆阿黎
文章19
标签9
分类3
es10 新特性

es10 新特性

本文主要介绍 es10 的新特性。

  1. 数组方法 Array.flat() 和 Array.flatMap
    Array.flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
    Array.flatMap() 方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 和 深度值1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。

    //  Array.flat() 示例:
    let arr = [1, 2, [3, 4, [5, 6, 7, [8, 9]], 10]]
    arr.flat(); // [1, 2, 3, 4, Array(4), 10] 效果等于 arr.flat(1)
    arr.flat(2); // [1, 2, 3, 4, 5, 6, 7, Array(2), 10]
    arr.flat(3); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    arr.flat(Infinity); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    // Array.flatMap() 示例:
    let arr1 = [1, 2, 3, 4, 5];
    arr1.map(x => [x, x * 2]); 
    // [Array(2), Array(2), Array(2), Array(2), Array(2)]
    // 0: (2) [1, 2]
    // 1: (2) [2, 4]
    // 2: (2) [3, 6]
    // 3: (2) [4, 8]
    // 4: (2) [5, 10]
    arr1.flatMap(x => [x, x * 2]); //[1, 2, 2, 4, 3, 6, 4, 8, 5, 10]
    
  2. Object.fromEntries()
    Object.fromEntries() 方法把键值对列表转换为一个对象。

    let obj = { apple : 10, orange : 20, banana : 30 };
    let entries = Object.entries(obj);
    // 0: (2) ["apple", 10]
    // 1: (2) ["orange", 20]
    // 2: (2) ["banana", 30]
    let fromEntries = Object.fromEntries(entries); // {apple: 10, orange: 20, banana: 30}
    
  3. 字符串方法:trimStart 和 trimEnd
    trimStart() 删除字符串的开头空格。
    trimEnd() 删除字符串末尾的空格。
    let s1 = '  你好呀~   ';
    s1.trimStart() // "你好呀~   "
    s1.trimEnd() // "  你好呀~"
    s1.trimStart().trimEnd() // "你好呀~"
    
  4. try { } catch {} // catch 的参数可以省略了
    在过去,try/catch 语句中的 catch 语句需要一个变量。 try/catch 语句帮助捕获终端级别的错误。在 ES10 中,捕获错误的变量是可选的,现在可以跳过错误变量:
    try {
     return true;
    }
    catch
    {
     return false;
    }