0

所以我有一个函数可以找到给定上限和下限的缺失数字,并且函数逻辑可以正常工作

const findMissingNumber = (arr, upperBound, lowerBound) => {
    arr = arr.sort((a, b) => a - b);
    let correctArray = [lowerBound];
    for (let i = 1; i < upperBound; i++, lowerBound++) {
        if (lowerBound + 1 < upperBound)
            correctArray[i] = lowerBound + 1;
        else
            break
    }
    correctArray.push(upperBound);
    arr.forEach((o, i, a) => {
        if (a[i] !== correctArray[i])
            return console.log(correctArray[i])
    })
}

这确实记录了 8 的值,但是如果我使用return correctArray[i]with console.log(findMissingNumber(arrayOfIntegers, 9, 3))i get undefined,这是什么原因?

4

1 回答 1

0

使用.find而不是.forEach. 更改console.logtoreturn true并返回查找结果。

return arr.find((o, i, a) => {
        if (a[i] !== correctArray[i])
            return true;
    })

您不能从 lambda 中返回封闭函数。您需要解析为原始函数中的一个值并从那里返回它。

或者,使用简单的 for of 循环代替 forEach。

于 2020-08-13T14:58:26.813 回答