Відмінності між версіями «Робота з масивами в JavaScript»

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
Рядок 25: Рядок 25:
 
                           a.push(this[i]);
 
                           a.push(this[i]);
 
                   }
 
                   }
 +
 
                   return a;
 
                   return a;
 
           };
 
           };
Рядок 76: Рядок 77:
  
 
     alert(a.min());    // повертає 1
 
     alert(a.min());    // повертає 1
 +
'''Сортування числових масивыв'''<br>
 +
У JavaScript є функція sort (), яка може сортувати масиви, однак за замовчуванням, вона сортує за алфавітом, навіть у тому випадку, якщо в масиві знаходяться числа. Тобто, масив виду [200,25,100,2,1,15] буде відсортований у вигляді [1,15,100,2,25,200], при тому, що правильним сортуванням був би варіант [1,2,15,25,100,200].
 +
Щоб правильно виконати сортування числового масиву, у функцію sort () потрібно передати callback функцію:
 +
    var a = [1,15,100,2,25,200];
 +
    var b = a.sort(function (a,b) { return a-b; });
 +
Щоб постійно не вписувати у функцію sort () цю анонімну функцію, можна доповнити об'єкт Array новою функцією sortNum:
 +
    Array.prototype.sortNum = function() {
 +
      return this.sort( function (a,b) { return a-b; } );
 +
    }
 +
 
 +
 +
    var a = [1,15,100,2,25,200];
 +
    var b = a.sortNum();

Версія за 08:21, 21 травня 2010

Виділення унікальних значень Виділити унікальні значення можна за допомогою функції

  function arrayUnique( ar ) {
          var a = [];
          var l = ar.length;
          for(var i = 0; i < l; i++) {
                  for(var j = i+1; j < l; j++) {
                   if (ar[i] === ar[j])
                                  j = ++i;
                  }
                  a.push(ar[i]);
         }
         return a;
  }

також можна добавити функцію в клас Array:

   Array.prototype.unique =
          function() {
                  var a = [];
                  var l = this.length;
                  for(var i = 0; i < l; i++) {
                          for(var j = i+1; j < l; j++) {
                                  if (this[i] === this[j])
                                          j = ++i;
                          }
                         a.push(this[i]);
                 }
                 return a;
         };

Приклад:

   var aList = [1,3,2,1,1,5,3,2];
   alert( aList.unique() );
  
   // результат 1,5,3,2

Копіювання масива Щоб скопіювати масив, можна скористатися функцією concat () об'єкта Array. Вона призначена для об'єднання двох масивів, але якщо ми створимо порожній масив і смакота його з масивом, який потрібно скопіювати, то отримаємо копію масиву. Наприклад:

   var arrayToCopy = [ 1, 2, 3, 4, 5 ];
  
   var copyOfArray = [].concat(arrayToCopy);

Для зручності можна створити копію яка повертає копію масива:

   function copyArray( ar ){
          return [].concat( ar );
   }

Або можна добавити функцію copy до класу Array:

  Array.prototype.copy =
          function() {
                  return [].concat(this);
          };
  
   // приклад використання
   var aList = [1,2,3,4,5];
  
   var newList = aList.copy();

Отримання максимального значення масива Максимальний элемент масива може бути отриманий за допомогою функції, добавлену до класу Array:

   Array.prototype.max = function(){
          return Math.max.apply({},this)
   }

Приклад використання:

  var a = [1,2,3,5,4,3,1,34,32,2,12];
  
   alert(a.max());    // повертає 34

Отримання мінімального елемента масива Мінімальний элемент масива може бути отриманий за допомогою наступної функції, добавленої до класу Array:

   Array.prototype.min = function(){
          return Math.min.apply({},this)
   }

Приклад використання:

   var a = [1,2,3,5,4,3,1,34,32,2,12];
  
   alert(a.min());    // повертає 1

Сортування числових масивыв
У JavaScript є функція sort (), яка може сортувати масиви, однак за замовчуванням, вона сортує за алфавітом, навіть у тому випадку, якщо в масиві знаходяться числа. Тобто, масив виду [200,25,100,2,1,15] буде відсортований у вигляді [1,15,100,2,25,200], при тому, що правильним сортуванням був би варіант [1,2,15,25,100,200]. Щоб правильно виконати сортування числового масиву, у функцію sort () потрібно передати callback функцію:

   var a = [1,15,100,2,25,200];
   var b = a.sort(function (a,b) { return a-b; });

Щоб постійно не вписувати у функцію sort () цю анонімну функцію, можна доповнити об'єкт Array новою функцією sortNum:

   Array.prototype.sortNum = function() {
     return this.sort( function (a,b) { return a-b; } );
   }
  
   var a = [1,15,100,2,25,200];
   var b = a.sortNum();