这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战
熟练使用 ES6 及更高版本对于我们在项目开发中可提高开发效率! 本文来学习 ES6 对数组的扩展方法: find()
& findIndex()
前面文章学习了 JavaScript 中操作数组的一些方法(Array.splice()
/slice()
/map()
/reduce()
等高阶函数), JavaScript 并不完美但是不影响其运行, 这里学习其中的一些神奇"bug"
直达列表
ES6 - find() & findIndex()
这两个方法是 ES6 对数组方法的扩展, 在 ECMAScript 6
规范中被加入
Array.prototype.find()
find()
数组实例的方法, 用于返回数组中满足提供的测试函数的第一个元素的值。
它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为 true 的成员,然后返回该元素。如果没有符合条件的成员,否则返回 undefined
.
通过简单代码来了解::
const array = [12, 1, 8, 16, 2, 211 130, 66, 1000];
const findFirst = array.find(item => item > 13);
console.log(findFirst); // 找到了第一个 16 满足传递的参数(回调函数) 大于13.
上面方法用于找到 第一个大于 13 的元素, 并返回.
find() 回调函数的参数
find 方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组. 如下
;[2, 1, 3, 10, 13].find(function (value, index, arr) {
return value > 9
}) // 10
findIndex()
findIndex()
方法的用法与 find 方法非常类似, 但是它是返回数组中找到的元素的位置(索引),而不是其值。
如果找不到就返回 -1
. (是不是有点熟悉: indexOf
)
;[2, 1, 3, 10, 13].findIndex(function (value, index, arr) {
return value > 9
}) // 返回的是 10 的索引: 3
两者可识别 NaN 啦
上面提到的indexOf()
方法无法识别数组的 NaN
, 所以 ES6 扩展的方法需要可以识别了吧! 故 find() 和 findIndex()都可以识别 NaN.
;[NaN]
.indexOf(NaN) // -1
[NaN].findIndex((item) => Object.is(NaN, item))
// 0
findIndex()
方法借助 Object.is
方法做到
相关阅读文章列表
- JavaScript 学习-函数剩余参数
- JS 小问题学习-函数可选参数
- JS 学习-for 循环
- JS 不完美亦可运行-自动加分号(
;
)问题、 - JS 不完美亦可运行-数组对象相加问题、
- JS 并不完美之箭头函数相关(二)、
- JS 并不完美~(一)浮点数
- JavaScript 高阶函数(一)
- JavaScript 高阶函数之 reduce
- 数组扁平化 Array.prototype.flat()
- 灵活操作数组数据 slice()
- 灵活操作数组-数组中间插入数据 splice()
学习 ES6
系列: