Ссылка на вызов Codewars
Это очень просто c, но по какой-то причине я не могу понять, почему я не могу вернуть null
, когда в массиве есть не любых непоследовательных чисел. Мой код работает нормально, когда массив не полностью последовательный:
function firstNonConsecutive(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] !== 1) {
return arr[i + 1];
}
}
return null;
}
console.log(firstNonConsecutive([ 0, 1, 2, 3, 4, 6, 7, 8, 9 ]));
Но если массив является последовательным, то есть так:
function firstNonConsecutive(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] !== 1) {
return arr[i + 1];
}
}
return null;
}
console.log(firstNonConsecutive([ 6, 7, 8, 9, 10, 11, 12 ]));
Вы видите, что он возвращает undefined
вместо null
. Почему он не возвращает ноль? Возврат за пределы -10 *.
Я попытался создать начальную проверку, чтобы увидеть, не является ли массив последовательным, например:
function firstNonConsecutive(arr) {
let newArr = [];
for (let j = arr[0]; j < arr[arr.length - 1]; j++) {
newArr.push(j);
}
//check if arr does not contain consecutive characters
if (String(arr) !== String(newArr)) {
for (let i = 0; i < arr.length; i++) {
if (arr[i + 1] - arr[i] !== 1) {
return arr[i + 1];
}
}
}
else {
return null;
}
}
console.log(firstNonConsecutive([ 0, 1, 2, 3, 4, 6, 7, 8, 9 ]));
Но это не имело значения. Есть идеи?