Как найти следующее свободное значение в массиве (цифру)?

Рейтинг: 1Ответов: 1Опубликовано: 23.04.2015

Есть массив

var arr = [1,2,4,5];

как найти следующее свободное значение (не индекс элемента, а именно значение), то есть узнать цифру "3".

К примеру в таком массиве

var arr = [1,2,3,4,5,6,8,9,10,11];

будет свободная цифра "7"

!!! Узнать следующее (!!! НЕ все свободные), а именно ближайшее следующее свободное значение "цифру"...

Как узнать?

Помоги пожалуйста, а то уже голова устала самому думать =)

Ответы

▲ 2Принят
function closeFree(arr) {
  var closerFree = null;
  for(var i = 1; i < arr.length; i++) {
    if(arr[i] - arr[i-1] > 1) return closerFree = arr[i] - 1;
  }
}

Работает только с цифрами: суть том, что мы вычитаем из текущего элемента, предыдущий, и если разница больше одного, значит между ними пропасть.
Плюс в том, что функцию можно расширить:

  1. Сейчас считается от начала, можно сделать, так что бы считалось от нужного элемента вперед ( и даже назад )
  2. Можно сделать возможность задать шаг, который определять, пропущен элемент или нет