find()和findIndex()方法
find()
1.find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。
例如:
[1, 5, 10, 15].find(function(value, index, arr) {
return value > 9;
}) // 10
2.给你一个下标从 0 开始的非负整数数组 nums 。对于 nums 中每一个整数,你必须找到对应元素的第二大整数。
如果 nums[j] 满足以下条件,那么我们称它为 nums[i] 的第二大整数:
1)j > i
2)nums[j] > nums[i]
3)恰好存在 一个 k 满足 i < k < j 且 nums[k] > nums[i]
如果不存在 nums[j] ,那么第二大整数为 -1 。
比方说,数组 [1, 2, 4, 3] 中,1 的第二大整数是 4 ,2 的第二大整数是 3 ,3 和 4 的第二大整数是 -1 。
// 下一个更大元素
const findBigNumber = (arr, num) => {
const result = arr.find((value, index) => {
return value > num && arr.indexOf(value) > 0 && index > arr.indexOf(num) + 1;
});
return result !== undefined ? result : -1;
}
console.log('下一个更大元素', findBigNumber([7, 3, 6, 8], 7)) //8
findIndex()
[1, 5, 10, 15].findIndex(function(value, index, arr) {
return value > 9;
}) // 2
注:find方法返回第一个使回调函数返回true的成员,否则返回undefined;findIndex返回该成员的位置,找不到则返回-1。这两个方法支持回调函数参数,可用于复杂条件判断,并能识别NaN,弥补了indexOf的不足。例如:
[NaN].indexOf(NaN)
// -1
[NaN].findIndex(y => Object.is(NaN, y))
// 0