ES6实用的数组方法

1 fill() 填充数组

常用于初始化数组

接收3个参数,第一个是填充的值,第二个和第三个参数是用于指定填充的起始位置和结束位置

['a', 'b', 'c'].fill(7)
// [7, 7, 7]

new Array(3).fill(7)
// [7, 7, 7]

['a', 'b', 'c'].fill(7, 1, 2)
// ['a', 7, 'c']

2 includes() 示某个数组是否包含给定的值

第一个参数是要查找的值,该数值返回一个布尔值

第二个参数表示搜索的起始位置,默认为0。如果第二个参数为负数,则表示倒数的位置,如果这时它大于数组长度(比如第二个参数为-4,但数组长度为3),则会重置为从0开始。

[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true


[1, 2, 3].includes(3, 3);  // false
[1, 2, 3].includes(3, -1); // true

3 flat() 用于将嵌套的数组“拉平”,实现扁平化

该方法返回一个新数组,对原数据没有影响

参数中如果传一个数字代表要拉平的层数,默认为1

[1, 2, [3, [4, 5]]].flat()
// [1, 2, 3, [4, 5]]

[1, 2, [3, [4, 5]]].flat(2)
// [1, 2, 3, 4, 5]

如果要拉平多层嵌套可以把Infinity关键字作为参数

[1, [2, [3]]].flat(Infinity)
// [1, 2, 3]

4 flatMap() 用于对原数组的每个成员执行一个函数,然后对返回值组成的数组执行flat()方法

该方法返回一个新数组,不改变原数组。

// 相当于 [[2, 4], [3, 6], [4, 8]].flat()
[2, 3, 4].flatMap((x) => [x, x * 2])
// [2, 4, 3, 6, 4, 8]


//flatMap()只能展开一层数组。

// 相当于 [[[2]], [[4]], [[6]], [[8]]].flat()
[1, 2, 3, 4].flatMap(x => [[x * 2]])
// [[2], [4], [6], [8]]

5 toReversed(),toSorted(),toSpliced(),with() 

这四个方法其实和传统的reverse(),sort(),splice()操作一样,唯一的不同是允许对数组进行操作时,不改变原数组,而返回一个原数组的拷贝。

  • toReversed()对应reverse(),用来颠倒数组成员的位置。
  • toSorted()对应sort(),用来对数组成员排序。
  • toSpliced()对应splice(),用来在指定位置,删除指定数量的成员,并插入新成员。
  • with(index, value)对应splice(index, 1, value),用来将指定位置的成员替换为新的值。
    const sequence = [1, 2, 3];
    sequence.toReversed() // [3, 2, 1]
    sequence // [1, 2, 3]
    
    const outOfOrder = [3, 1, 2];
    outOfOrder.toSorted() // [1, 2, 3]
    outOfOrder // [3, 1, 2]
    
    const array = [1, 2, 3, 4];
    array.toSpliced(1, 2, 5, 6, 7) // [1, 5, 6, 7, 4]
    array // [1, 2, 3, 4]
    
    const correctionNeeded = [1, 1, 3];
    correctionNeeded.with(1, 2) // [1, 2, 3]
    correctionNeeded // [1, 1, 3]

ES6ECMAScript 2015)引入了大量新的数组方法,增强了数组的处理能力。其中一些重要的新增方法包括: 1. **find**: 这个方法返回数组中满足提供的测试函数的第一个元素,如果没有找到符合条件的,则返回undefined。 ```javascript const numbers = [1, 2, 3, 4, 5]; const result = numbers.find(item => item > 3); // 返回4 ``` 2. **findIndex**: 类似于`find`,但它返回满足条件的第一个元素的索引,找不到则返回-1。 ```javascript const index = numbers.findIndex(item => item == 4); // 返回3 ``` 3. **filter**: 通过测试函数过滤数组,返回一个新的只包含满足条件元素的新数组。 ```javascript const evenNumbers = numbers.filter(item => item % 2 === 0); // 返回[2, 4] ``` 4. **map**: 对数组的每个元素应用一个映射函数,并返回新数组,原数组不变。 ```javascript const squared = numbers.map(item => item * item); // 返回[1, 4, 9, 16, 25] ``` 5. **reduce**: 用于迭代数组并对每个元素应用一个归约函数,最终得到一个单一的累积值。 ```javascript const sum = numbers.reduce((total, num) => total + num, 0); // 返回15 ``` 6. **flat**: 展开嵌套的数组成扁平化的数组。 ```javascript const nestedArray = [[1, 2], [3, 4]]; const flattened = nestedArray.flat(); // 返回[1, 2, 3, 4] ``` 7. **fill**: 将指定值填充数组从开始到结束的所有元素,支持指定起始和结束位置。 ```javascript numbers.fill(0, 2); // [1, 2, 0, 4, 5] ``` 8. **includes**: 检查数组是否包含某个元素,返回布尔值。 ```javascript const hasThree = numbers.includes(3); // 返回true ``` 这些方法使得处理数组更加方便高效,提高了代码的可读性和简洁度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值