/**
* Возвращает первый по возрастанию пропущенный номер
* @param {String} searchingRange
*/
function getMissingNumber(searchingRange) {
const values = searchingRange
.map(item => Number(item))
.sort((a, b) => a - b)
const isEmptyRange = values
.reduce((acc, item) => acc + item, 0)
if (isEmptyRange == Number(0)) {
return 1
}
if (isEmptyRange == Number(0)) {
return 2
}
for (let i = 1; i < values.length; i += 1) {
let currentNum = values[i]
let previousNum = values[i - 1]
if (currentNum - previousNum > 1 ) {
return previousNum + 1
}
}
return "Все номера на месте"
}
sort((a, b) => a - b)
/**
* Возвращает первый по возрастанию пропущенный номер
* @param {String} searchingRange
*/
function getMissingNumber(searchingRange) {
const values = searchingRange.map(item => Number(item)).sort((a, b) => a - b)
for (let i = 1; i < values.length; i += 1) {
let currentNum = values[i]
let previousNum = values[i - 1]
if (currentNum - previousNum > 1 ) {
return previousNum + 1
}
}
return "Все номера на месте"
}
И далее с помощью формулы =ИЛИ(СОВПАД(E2;$F$2:$F$8)) проверяете наличия совпадения данных из первого диапазона во втором
closures
возвращает функцию. Внутри нее также есть console.log
, который при запуске выведет Вам в лог то, что хотите. После исполнения console.log(`sum(3) = ${number1}`);
функция наткнется на return function (number2 = 5) {...}
. То есть она ее вернет, но сам вызов прекратиться. const call1 = closures(); // Здесь вернется функция (number2 = 5) => {...}
return function (number2 = 5) {...}
, нужно ее также вызвать. Внутри нее есть какая-то логика, которая выполнится и после этого вернется функция return function (number3 = 20) {
. const call1 = closures(); // Здесь вернется функция (number2 = 5) => {...}
const call2 = call1(); // Здесь вернется функция (number3 = 20) => {...}
const call1 = closures(); // Здесь вернется функция (number2 = 5) => {...}
const call2 = call1(); // Здесь вернется функция (number3 = 20) => {...}
call2(); // Здесь вернется undefined