es6之数组方法

博客主要围绕数组相关内容展开。介绍了用ES5的slice方法和ES6的Array.from()方法将类数组转换为数组;提及用new方法和Array.of()方法创建数组;阐述了fill()方法的参数及作用;还介绍了includes()方法,认为copyWithIn()不如splice()实用。

一丶类数组

const divs = document.getElementsByTagName('div')
console.log(divs) //HTMLCollection[]
console.log(divs instanceof Array) //false

1.用es5的方法将类数组变为数组,借助slice方法

const arr = Array.prototype.slice.call(divs)
console.log(arr) // []
console.log(arr instanceof Array) // true

2.介绍ES6中的数组的新方法Array.from(),将类数组转换为数组

const arr = Array.from(divs)
console.log(arr) // []
console.log(arr instanceof Array) // true

二丶Array.of() 方法
1.先介绍用new方法创建数据的方式

const arr = new Array(1, 2, 3)
console.log(arr) //[1, 2, 3]

const arr1 = new Array(3)
console.log(arr1) //[empty × 3]  这里生成一个长度为3的空数组

2.再用Array.of()方法

const arr = Array.of(1, 2, 3)
console.log(arr)

const arr1 = Array.of(3)
console.log(arr1)

const arr2 = Array.of(1, 'id', true, [1, 2], { 'name': 'ly' })
console.log(arr2) //[1, "id", true, Array(2), {…}]

三丶fill()方法
fill()方法,该方法有三个参数:
fill(value, start, end)
value:想要替换的内容。
start:开始位置(数组的下标),可以省略。
end:替换结束位置(数组的下标),如果省略不写就默认为数组结束。

const arr = new Array(3).fill(5)
console.log(arr) //[5, 5, 5]

let arr1 = [1, 2, 3, 4, 5]
arr1 = arr1.fill(0)
console.log(arr1) //[0,0,0,0,0]

let arr2 = [1, 2, 3, 4, 5]
arr2 = arr2.fill(88, 1, 3)
console.log(arr2) //[1, 88, 88, 4, 5]

四丶includes()方法

const arr = [1, 2, 3]
console.log(arr.indexOf(2)) // 1 找到就输出找到元素的下标,没有找到的话则返回-1
console.log(arr.indexOf(4)) // -1

const arr2 = [1, 2, 3, NaN]
console.log(arr2.indexOf(NaN)) // -1
console.log(NaN == NaN)  //false

const arr3 = [1, 2, 3, NaN]
console.log(arr3.includes(2)) //true
console.log(arr3.includes(4)) //false
console.log(arr3.includes(NaN)) //true

五,copyWithIn(),个人感觉可能用不到,不如用splice()方法

ES6(ECMAScript 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、付费专栏及课程。

余额充值