O functie care poate fi utilizata in JavaSccript pentru a obtine numarul mai mare, mai mic si cel mai apropiat dintre acestea doua fata de alt nr.. Functia primeste doi parametri: un array (sau obiect) cu numere, si numarul. Compara acel numar cu cele din array /obiect, apoi returneaza numarul imediat mai mic ("lower"), cel imediat mai mare ("higher"), si cel mai apropiat ("closest").
Iata functia:
// returneaza un obiect cu  numerele din "nums": mai mici ('lower'), mai mare ('higher'), apropiat ('closest') de nr
// "nums" poate fi un Array cu numere [-2, 0, 3], sau un obiect {'n1': -1, 'n2': 1, 'n3': 2}
function closestLowerHigherNr(nums, nr) {
 // Curs JavaScript & jQuery - https://marplo.net/javascript/
  // Obtine intr-un Array valorile din "nums" (array /obiect), si le aranjeaza in ordine crescatoare
  var vnums = [];
  for each(var val in nums) vnums.push(val);
  vnums.sort(function(a,b){return a - b;});

  var nr_vnums = vnums.length;      // numarul de elemente in vnums

  // seteaza obiectul care va fi returnat, initial cu numarul cel mai mic si mai mare din vnums
  var re_obj = {'lower': Math.min(vnums[0], nr), 'higher': Math.max(vnums[nr_vnums-1], nr), 'closest': nr};

  // parcurge numerele, retine in re_obj numarul imediat mai mic si mai mare decat nr
  for(var i=0; i<nr_vnums; i++){
    if(nr > vnums[i]) re_obj['lower'] = vnums[i];
    else if(nr <= vnums[i]){
      // daca numarul curent din vnums este egal cu nr, sau imediat mai mare, retine numarul
      // si opreste instructiunea for each()
      re_obj['higher'] = vnums[i];
      break;
    }
  }

  // aici se obtine numarul cel mai apropiat de nr
  // (numarul ('lower' sau 'higher') cu cea mai mica diferenta de 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;
}

Exemplu utiizare functie closestLowerHigherNr().
<script type="text/javascript"><!--
// returneaza un obiect cu  numerele din "nums": mai mici ('lower'), mai mare ('higher'), apropiat ('closest') de nr
// "nums" poate fi un Array cu numere [-2, 0, 3], sau un obiect {'n1': -1, 'n2': 1, 'n3': 2}
function closestLowerHigherNr(nums, nr) {
 // JavaScript & jQuery Course - http://www.coursesweb.net/javascript/
  // Obtine intr-un Array valorile din "nums" (array /obiect), si le aranjeaza in ordine crescatoare
  var vnums = [];
  for each(var val in nums) vnums.push(val);
  vnums.sort(function(a,b){return a - b;});

  var nr_vnums = vnums.length;      // numarul de elemente in vnums

  // seteaza obiectul care va fi returnat, initial cu numarul cel mai mic si mai mare din vnums
  var re_obj = {'lower': Math.min(vnums[0], nr), 'higher': Math.max(vnums[nr_vnums-1], nr), 'closest': nr};

  // parcurge numerele, retine in re_obj numarul imediat mai mic si mai mare decat nr
  for(var i=0; i<nr_vnums; i++){
    if(nr > vnums[i]) re_obj['lower'] = vnums[i];
    else if(nr <= vnums[i]){
      // daca numarul curent din vnums este egal cu nr, sau imediat mai mare, retine numarul
      // si opreste instructiunea for each()
      re_obj['higher'] = vnums[i];
      break;
    }
  }

  // aici se obtine numarul cel mai apropiat de nr
  // (numarul ('lower' sau 'higher') cu cea mai mica diferenta de 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;
}

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

// numerele stocate intr-un obiect
var nums_obj = {'n1':-8, 'n2':0, 'n3':12, 'n4':5.8, 'n5':9, 'n6':2.1};
var test3 = closestLowerHigherNr(nums_obj, 9);

// afiseaza fereastra alert cu valorile din in test1, test2, test3
alert('lower: '+test1.lower+ ', higher: '+test1.higher+ ', closest: '+ test1.closest);
  // Rezultat: lower: -8, higher: -3, closest: -8

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

alert('lower: '+test3.lower+ ', higher: '+test3.higher+ ', closest: '+ test3.closest);
  // Rezultat: lower: 5.8, higher: 9, closest: 9
//-->
</script>

Aceasta functie este buna si daca "nr" este mai mic, sau mai mare decat orice numar din array /obiect.
Exemplu:
<script type="text/javascript"><!--
// Aici se adauga functia closestLowerHigherNr()

var numbers = [-8, 2, 12];
var test4 = closestLowerHigherNr(numbers, -23);      // -23 e mai mic decat orice numar din "numbers"
var test5 = closestLowerHigherNr(numbers, 18);       // 18 e mai mare decat orice numar din "numbers"

// testeaza valorile din test4, test5
alert('lower: '+test4.lower+ ', higher: '+test4.higher+ ', closest: '+ test4.closest);
  // Rezultat: lower: -28, higher: -8, closest: -23
alert('lower: '+test5.lower+ ', higher: '+test5.higher+ ', closest: '+ test5.closest);
  // Rezultat: lower: 12, higher: 18, closest: 12
//-->
</script>

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care tag e folosit pentru a adauga liste cu definitii in element <dl>?
<dt> <dd> <li>
<dl>
 <dt>HTML</dt>
  <dd> - Hyper Text Markup Language</dd>
  <dd> - Limbaj de cod pentru pagini web</dd>
</dl>
Care proprietate CSS poate sa ascunda un element in pagina, lasand spatiu gol in locul lui?
display position visibility
#id {
  visibility: hidden;
}
Indicati evenimentul declansat cand se apasa clic pe un obiect in pagina.
onclick onmouseover onfocus
document.getElementById("id").onclick = function(){
  alert("http://www.MarPlo.net/");
}
Indicati variabila PHP ce contine datele din $_GET, $_POST si $_COOKIE.
$_SESSION $_GET $_REQUEST
if(isset($_REQUEST["id"])) {
  echo $_REQUEST["id"];
}
Care din urmatoarele cuvinte reprezinta un Verb?
lighting believe path
I believe in my path.
- Eu cred in calea mea.
Care din urmatoarele cuvinte reprezinta un Verb?
creer camino iluminaciĆ³n
creer = a crede; camino = cale /drum; iluminaciĆ³n = iluminare
Obtine numarul mai mare, mai mic si cel apropiat

Last accessed pages

  1. Curs CSS Online Tutoriale CSS3 (12993)
  2. Elemente principale HTML (11243)
  3. Curs HTML gratuit Tutoriale HTML5 (44629)
  4. Limba spaniola curs online incepatori si avansati (13791)
  5. Blog si Cugetari Personale (8834)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (5007)
  2. Curs HTML gratuit Tutoriale HTML5 (4135)
  3. Curs si Tutoriale JavaScript (3795)
  4. Curs PHP MySQL, Tutoriale si Scripturi PHP (3629)
  5. Curs CSS Online Tutoriale CSS3 (3535)