ES6中数组新增了哪些扩展?

ES6(ECMAScript 2015)为数组(Array)引入了一些新的扩展和特性,这些扩展使得数组操作变得更加简洁和强大。以下是一些主要的新增扩展:

  1. 扩展运算符(Spread Operator)...

    • 可以在函数调用/数组构造时,将数组元素或者可迭代对象的元素展开。
    • 示例:
    let arr1 = [1, 2, 3];
    let arr2 = [...arr1, 4, 5]; // arr2 现在是 [1, 2, 3, 4, 5]
    
    • 也可以用于对象字面量,进行对象的浅拷贝。
  2. Array.from()

    • 创建一个新的数组实例,从一个可迭代对象或者类数组对象。
    • 示例:
    let arrayLike = {0: 'a', 1: 'b', 2: 'c', length: 3};
    let arr = Array.from(arrayLike); // arr 现在是 ['a', 'b', 'c']
    
  3. Array.of()

    • 创建一个新的数组实例,使用可变数量的参数,而不管参数的数量或类型。
    • 示例:
    let arr = Array.of(1, 2, 3); // arr 现在是 [1, 2, 3]
    

    这与直接使用数组字面量 [1, 2, 3] 是相同的,但Array.of()允许你在没有字面量语法时创建数组。

  4. find() 和 findIndex()

    • find() 方法返回数组中满足提供的测试函数的第一个元素的值。
    • findIndex() 方法返回数组中满足提供的测试函数的第一个元素的索引。
    • 示例:
    let arr = [1, 2, 3, 4, 5];
    let found = arr.find(element => element > 3); // found 现在是 4
    let index = arr.findIndex(element => element > 3); // index 现在是 3
    
  5. fill()

    • 用一个静态值填充一个数组从起始索引到结束索引(不包括结束索引)的所有元素。
    • 示例:
    let arr = [1, 2, 3, 4, 5];
    arr.fill(0, 2, 4); // arr 现在是 [1, 2, 0, 0, 5]
    
  6. entries(), keys(), 和 values()

    • 这三个方法都返回一个新的数组迭代器对象,它包含数组中每个索引的键/值对。
    • keys() 返回键的迭代器。
    • values() 返回值的迭代器。
    • entries() 返回键/值对的迭代器。
    • 示例:
    let arr = ['a', 'b', 'c'];
    for (let pair of arr.entries()) {
      console.log(pair); // 输出类似 [0, 'a'], [1, 'b'], [2, 'c'] 的数组
    }
    
  7. copyWithin()

    • 在当前数组内部,将指定范围的元素浅拷贝到另一个指定位置,并返回这个数组。
    • 示例:
    let arr = [1, 2, 3, 4, 5];
    arr.copyWithin(0, 3, 4); // arr 现在是 [4, 2, 3, 4, 5]
    

这些新特性为数组操作提供了更多的灵活性和便捷性。

当然,除了之前提到的扩展之外,ES6还为数组提供了其他一些有用的新增方法和特性:

  1. includes()

    • 用来判断一个数组是否包含一个指定的值,根据情况,如果需要,会搜索整个数组。如果找到,则返回true;否则返回false
    • 示例:
    let arr = [1, 2, 3, 4, 5];
    let includesResult = arr.includes(3); // includesResult 现在是 true
    let includesResult2 = arr.includes(6); // includesResult2 现在是 false
    
  2. flat() 和 flatMap()

    • flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
    • flatMap() 方法首先使用映射函数映射每个元素,然后将结果展平为一个新数组。它等同于对数组使用map()方法,然后再使用flat()方法,但flatMap()通常比使用这两个方法更有效率。
    • 示例:
    let arr = [1, 2, [3, 4, [5, 6]]];
    let flatResult = arr.flat(2); // flatResult 现在是 [1, 2, 3, 4, 5, 6]
    
    let numbers = [1, 2, 3, 4];
    let flatMapResult = numbers.flatMap(x => [x, x * 2]); // flatMapResult 现在是 [1, 2, 2, 4, 3, 6, 4, 8]
    
  3. 排序稳定性(Sort Stability)

    • 在ES6中,数组的sort()方法被要求为稳定排序。这意味着如果数组中有两个相等的元素,那么它们的原始顺序在排序后会被保留。
    • 示例:
    let arr = [20, 1, 100, 1, 2, 1];
    arr.sort((a, b) => a - b); // arr 现在是 [1, 1, 2, 100, 20],相等的元素保留了它们的原始顺序
    
  4. 数组的空位(Array Holes)

    • 在ES6中,数组可以包含空位(holes),即稀疏数组。空位就是那些被显式赋予undefined的元素,或者从未被赋值的元素。然而,大部分数组方法都会忽略这些空位,只处理实际存在的元素。

请注意,尽管这些方法和特性在ES6中被引入,但它们在不同的JavaScript引擎中的实现可能会有所不同,因此在某些旧版本的浏览器或环境中可能无法使用。在开发时,请确保你的目标环境支持这些特性,或者提供必要的降级方案。

  • 26
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值