A function that can be used in JavaSccript to get the lower, higher, and closest number. The function receives two parameters: an array (or object) with numbers, and the number. Compares that number with the numbers from array /object, than returns an object with three elements: the "lower", "higher", and "closest" number.
Here's the function:
// retutrs an object with the number from "nums": lower, higher and closest to nr
// "nums" can be an Array with numbers [-2, 0, 3], or an object {'n1': -1, 'n2': 1, 'n3': 2}
function closestLowerHigherNr(nums, nr) {
 // JavaScript & jQuery Course - https://coursesweb.net/javascript/
  // Gets into an Array the values from "nums" array /object, and sorts from lowest to highest
  var vnums = [];
  for each(var val in nums) vnums.push(val);
  vnums.sort(function(a,b){return a - b;});

  var nr_vnums = vnums.length;      // number of elements in vnums

  // sets the object that will be returned, initially with the lowest and highest number from vnums
  var re_obj = {'lower': Math.min(vnums[0], nr), 'higher': Math.max(vnums[nr_vnums-1], nr), 'closest': nr};

  // traverse the numbers, stores in re_obj the number immediately lower and higher than nr
  for(var i=0; i<nr_vnums; i++){
    if(nr > vnums[i]) re_obj['lower'] = vnums[i];
    else if(nr <= vnums[i]){
      // if the current number from vnums is equal to nr, or immediately higher, stores that number
      // and stops the for each() loop
      re_obj['higher'] = vnums[i];
      break;
    }
  }

  // here it gets the closest number to nr
  // (the number ('lower' or 'higher') with the lowest diferrence between its value and nr)
  re_obj['closest'] = (Math.abs(nr - re_obj['lower']) < Math.abs(re_obj['higher'] - nr)) ? re_obj['lower'] : re_obj['higher'];

  return re_obj;
}
Example usage closestLowerHigherNr() function.
<script type="text/javascript"><!--
// retutrs an object with the number from "nums": lower, higher and closest to nr
// "nums" can be an Array with numbers [-2, 0, 3], or an object {'n1': -1, 'n2': 1, 'n3': 2}
function closestLowerHigherNr(nums, nr) {
 // JavaScript & jQuery Course - https://coursesweb.net/javascript/
  // Gets into an Array the values from "nums" array /object, and sorts from lowest to highest
  var vnums = [];
  for each(var val in nums) vnums.push(val);
  vnums.sort(function(a,b){return a - b;});

  var nr_vnums = vnums.length;      // number of elements in vnums

  // sets the object that will be returned, initially with the lowest and highest number from vnums
  var re_obj = {'lower': Math.min(vnums[0], nr), 'higher': Math.max(vnums[nr_vnums-1], nr), 'closest': nr};

  // traverse the numbers, stores in re_obj the number immediately lower and higher than nr
  for(var i=0; i<nr_vnums; i++){
    if(nr > vnums[i]) re_obj['lower'] = vnums[i];
    else if(nr <= vnums[i]){
      // if the current number from vnums is equal to nr, or immediately higher, stores that number
      // and stops the for each() loop
      re_obj['higher'] = vnums[i];
      break;
    }
  }

  // here it gets the closest number to nr
  // (the number ('lower' or 'higher') with the lowest diferrence between its value and nr)
  re_obj['closest'] = (Math.abs(nr - re_obj['lower']) < Math.abs(re_obj['higher'] - nr)) ? re_obj['lower'] : re_obj['higher'];

  return re_obj;
}

// Example
var numbers = [-8, -3, 0, 5.8, 12, 9, 2.1];
var test1 = closestLowerHigherNr(numbers, -6);
var test2 = closestLowerHigherNr(numbers, 3);

// the numbers are strored into an object
var nums_obj = {'n1':-8, 'n2':0, 'n3':12, 'n4':5.8, 'n5':9, 'n6':2.1};
var test3 = closestLowerHigherNr(nums_obj, 9);

// see the values in test1, test2, test3
alert('lower: '+test1.lower+ ', higher: '+test1.higher+ ', closest: '+ test1.closest);
  // Result: lower: -8, higher: -3, closest: -8

alert('lower: '+test2.lower+ ', higher: '+test2.higher+ ', closest: '+ test2.closest);
  // Result: lower: 2.1, higher: 5.8, closest: 2.1

alert('lower: '+test3.lower+ ', higher: '+test3.higher+ ', closest: '+ test3.closest);
  // Result: lower: 5.8, higher: 9, closest: 9
//-->
</script>
This function works also if "nr" is lower, or higher than any number in array /object.
Example:
<script type="text/javascript"><!--
// here add the closestLowerHigherNr() function

var numbers = [-8, 2, 12];
var test4 = closestLowerHigherNr(numbers, -23);      // -23 is lower than any number in "numbers"
var test5 = closestLowerHigherNr(numbers, 18);       // 18 is higher than any number in "numbers"

// see the values in test4, test5
alert('lower: '+test4.lower+ ', higher: '+test4.higher+ ', closest: '+ test4.closest);
  // Result: lower: -28, higher: -8, closest: -23
alert('lower: '+test5.lower+ ', higher: '+test5.higher+ ', closest: '+ test5.closest);
  // Result: lower: 12, higher: 18, closest: 12
//-->
</script>

Daily Test with Code Example

HTML
CSS
JavaScript
PHP-MySQL
Which tag defines the clickable areas inside the image map?
<map> <img> <area>
<img src="image.jpg" usemap="#map1">
<map name="map1">
  <area shape="rect" coords="9, 120, 56, 149" href="#">
  <area shape="rect" coords="100, 200, 156, 249" href="#">
</map>
Which CSS property defines what is done if the content in a box is too big for its defined space?
display overflow position
#id {
  overflow: auto;
}
Click on the event which is triggered when the mouse is positioned over an object.
onclick onmouseover onmouseout
document.getElementById("id").onmouseover = function(){
  document.write("Have Good Life");
}
Indicate the PHP variable that contains data added in URL address after the "?" character.
$_SESSION $_GET $_POST
if(isset($_GET["id"])) {
  echo $_GET["id"];
}
Get Lower, Higher and Closest Number in JavaScript

Last accessed pages

  1. Contact page - CoursesWeb (33355)
  2. Tabs effect with CSS (34008)
  3. Making DIV Contents Scroll Horizontally, with multiple Div`s inside (40798)
  4. PhpSpreadsheet - Read, Write Excel and LibreOffice Calc files (19462)
  5. Node.js Move and Copy file (14934)

Popular pages this month

  1. Making DIV Contents Scroll Horizontally, with multiple Div`s inside (1852)
  2. Contact page - CoursesWeb (1800)
  3. Tabs effect with CSS (1799)
  4. Courses Web: PHP-MySQL JavaScript Node.js Ajax HTML CSS (564)
  5. Insert, Select and Update NULL value in MySQL (443)