Узнать ближайшие числа

372
12 декабря 2016, 10:15

Всем привет.

Есть такая задача. Допустим, есть число 150. Есть массив с числами [145, 5, 7, 148, 161,190,153 и т.д.].

Каким образом можно узнать ближайшее меньшее и ближайшее большее число? (В данном примере это должны быть числа 148 и 153.) Я встрял ч.г. с этим вопросом. Заранее всем спасибо.

Answer 1

Каким образом можно узнать ближайшее меньшее и ближайшее большее число?

Пройтись по массиву, сравнивая каждое число, и обновляя одно из ближайших, если его надо обновить, no magic here

var closestLeft,
    closestRight,
    data = [145, 5, 7, 148, 161, 190, 153],
    number = 150,
    current;
for (var i = 0; i < data.length; i++) {
    current = data[i];
    if (current < number && (typeof closestLeft === 'undefined' || closestLeft < current)) {
        closestLeft = current;
    } else if (current > number && (typeof closestRight === 'undefined' || closestRight > current)) {
        closestRight = current;
    }
}

jquery

awesome link

Answer 2

Код писать не буду, покажу алгоритм (возможно, не самый оптимальный, ручаться за это не стану)

  1. Заводите две переменные, одна из которых (назовем ее minApproach) будет хранить наиболее близкое число, которое меньше заданного, вторая (назовем ее maxApproach) - наиболее близкое из тех, что больше заданного
  2. Присваиваете этим переменным соответствующие значения. для minApproach - значение первого элемента, которое меньше заданного числа. Для maxApproach - первое значение, которое больше заданного.
  3. Если какое-то из двух значений на предыдущем шаге не найдено (проще говоря, если заданное значение является минимумом или максимумом массива), то одно из ближних значений (minApproach или maxApproach) искать не имеет смысла
  4. Бежите в цикле по всем элементам массива и сравниваете каждый с двумя вышеуказанными переменными
  5. если очередной элемент массива больше заданного числа (150) и при этом меньше maxApproach, то записываем его значение в maxApproach. Таким же образом сравниваем с minApproach с той лишь разницей, что элемент должен быть меньше заданного, но больше maxApproach

Собственно, все

READ ALSO
Mousewheel

Mousewheel

Всем добра :)

301
Проблема в history.js (jQuery)

Проблема в history.js (jQuery)

Я не пойму как устранить следующую ошибку:

341
Jquery DateTimePicker обязательный выбор времени

Jquery DateTimePicker обязательный выбор времени

Использую для выбора даты и времени компонент Jquery DateTimePicker (http://xdsoftnet/jqplugins/datetimepicker/)

330