Curs Javascript

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 HTML5 adauga o aplicatie externa (SWF, PDF) in pagina web?
<mark> <embed> <canvas>
<embed src="flash_game.swf" width="450" height="350" />
Ce pseudo-element adauga un anume stil la prima linie de text din element?
:first-letter :before :first-line
#id:first-line {
  font-weight: bold;
  color: blue;
}
Clic pe proprietatea obiectului window care preia sau seteaza adresa URL a paginii curente.
window.location window.self window.status
var url = window.location;
alert(url);
Indicati functia PHP care preia continutul unui fisier sau pagina si-l adauga intr-un sir.
fopen() file_put_contents() file_get_contents()
$homepage = file_get_contents("http://www.marplo.net/");
echo $homepage;
Care din urmatoarele perechi de numere sunt in ordine unul dupa altu?
seven - eight ten - six three - five
This fruit has seven or eight seeds.
- Acest fruct are sapte sau opt seminte.
Care din urmatoarele perechi de numere sunt in ordine unul dupa altu?
diez - seis siete - ocho tres - cinco
Esta fruta tiene siete u ocho semillas.
- Acest fruct are sapte sau opt seminte.
Obtine numarul mai mare, mai mic si cel apropiat

Last accessed pages

  1. Expresii regulate Regex (2120)
  2. Intelegere OOP - Object Oriented Programming (1041)
  3. Notiuni fundamentale despre bazele de date SQL (9654)
  4. Butoane pentru link-uri folosind o singura imagine si CSS (2348)
  5. MySQL Alias si functii (1479)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (302)
  2. Curs PHP MySQL, Tutoriale si Scripturi PHP (170)
  3. Curs si Tutoriale JavaScript (169)
  4. Curs HTML gratuit Tutoriale HTML5 (165)
  5. Curs CSS Online Tutoriale CSS3 (152)