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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值