Вы уже знаете, что метод filter
возвращает существующие значения.
Чтобы найти непоследовательные числа в массиве чисел, вы можете использовать различные методы (например, reduce
или al oop), см. Другие ответы. Они работают для отсортированных массивов.
Функция в этом фрагменте берет минимальное и максимальное значение из заданного массива и, для всех значений от этого минимума до максимума, проверяет данный массив на наличие значения. Он найдет всех пробелов в массиве чисел. Данный массив не нужно (предварительно) сортировать. Он может получить необязательный начальный номер (минимальное значение) для данного массива. И, наконец, выдает ошибку, когда данный массив содержит ненулевые c значения.
console.log(findNonConsecutiveNumbersInArray([1, 2, 3, 4, 5, 6, 7, 8, 10]).join());
console.log(findNonConsecutiveNumbersInArray([1, 6, 7, 8, 10, 11, 12, 15]).join());
console.log(findNonConsecutiveNumbersInArray([6, 8, 2, 1, 9]).join());
console.log(findNonConsecutiveNumbersInArray([6, 14, 9, 8]).join());
console.log(findNonConsecutiveNumbersInArray([6, 14, 9, 8], 1).join());
console.log(findNonConsecutiveNumbersInArray([6, 14, 9, 8, 'Not A Number']).join());
function findNonConsecutiveNumbersInArray(arrayOfNumbers, start) {
if (arrayOfNumbers.find( v => v.constructor !== Number) ) {
throw new RangeError("The provided Array should only contain numbers");
}
let index = start ? start - 1 : Math.min.apply(null, arrayOfNumbers);
const max = Math.max.apply(null, arrayOfNumbers);
let result = [];
while (index++ < max) {
if (!arrayOfNumbers.includes(index)){
result.push(index);
}
}
return result;
}
.as-console-wrapper { top: 0; max-height: 100% !important; }