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
Ce tip de <input> creaza o paleta de culori pentru selectare culoare?
type="text" type="color" type="date"
<input type="color" name="get_color" />
Care metoda CSS roteste elementul HTML la un anumit numar de grade?
scale() translate() rotate()
#some_id:hover {
  transform: rotate(60deg);
  -ms-transform: rotate(60deg);    /* IE 9 */
  -moz-transform: rotate(60deg);   /* Firefox */
}
Click pe functia care returneaza numarul cel mai mare.
pow() min() max()
var maxn = Math.max(8, 4, 88, 56);
alert(maxn);      // 88
Ce functie previne ca un fisier sa fie inclus mai mult de o data intr-o pagina?
include() include_once() require()
include_once("un_fisier.php");
Care este traducerea corecta pentru: "Ahead of time"?
Peste timp La timp Inainte de vreme
Most people arrived ahead of time.
- Cei mai multi oameni au sosit inainte de vreme (prea devreme).
Indicati traducerea corecta a cuvantului "buenĂ­simo"
mai bun mai putin bun extrem de bun
Este fruto es buenĂ­simo.
- Acest fruct este extrem /nemaipomenit de bun.
Obtine numarul mai mare, mai mic si cel apropiat

Last accessed pages

  1. Pronumele in limba engleza - Pronouns (54818)
  2. Curs HTML gratuit Tutoriale HTML5 (196583)
  3. Verbe modale - Modal verbs - CAN, COULD, MAY, MIGHT, MUST (67758)
  4. Ir a + Infinitiv Forma de viitor (2336)
  5. Adverbele in limba engleza - Adverbs (33499)

Popular pages this month

  1. Curs HTML gratuit Tutoriale HTML5 (361)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (347)
  3. Coduri pt culori (231)
  4. Formatare text in pagina html (125)
  5. Gramatica limbii spaniole. Indrumator si prezentare generala (122)