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

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
(push)
 
(не показані 5 проміжних версій 3 учасників)
Рядок 1: Рядок 1:
'''Виділення унікальних значень'''
+
'''Масиви''' - це тип даних, який може містити багато значень. Іншими словами, змінна типу масив - це змінна, яка містить в собі не одне значення (як було раніше), а багато значень одночасно.
Виділити унікальні значення можна за допомогою функції
+
  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:
+
  1. Array.prototype.unique =
+
  2.        function() {
+
  3.                var a = [];
+
  4.                var l = this.length;
+
  5.                for(var i = 0; i < l; i++) {
+
  6.                        for(var j = i+1; j < l; j++) {
+
  7.                                if (this[i] === this[j])
+
  8.                                        j = ++i;
+
  9.                        }
+
  10.                        a.push(this[i]);
+
  11.                }
+
  12.                return a;
+
  13.        };
+
Приклад:
+
  1. var aList = [1,3,2,1,1,5,3,2];
+
  2. alert( aList.unique() );
+
  3.
+
  
  4. // результат 1,5,3,2
 
'''Копіювання масива'''
 
Щоб скопіювати масив, можна скористатися функцією concat () об'єкта Array. Вона призначена для об'єднання двох масивів, але якщо ми створимо порожній масив і смакота його з масивом, який потрібно скопіювати, то отримаємо копію масиву.
 
Наприклад:
 
  1. var arrayToCopy = [ 1, 2, 3, 4, 5 ];
 
  2.
 
  
  3. var copyOfArray = [].concat(arrayToCopy);
+
== Створення ==
Для зручності можна створити копію яка повертає копію масива:
+
  1. function copyArray( ar ){
+
  2.        return [].concat( ar );
+
  3. }
+
Або можна добавити функцію copy до класу Array:
+
  1. Array.prototype.copy =
+
  2.        function() {
+
  3.                return [].concat(this);
+
  4.        };
+
  5.
+
  
  6. // приклад використання
+
Створення порожнього масиву та задання значень перших двох елементів
  7. var aList = [1,2,3,4,5];
+
var myArray = new Array ()
  8.
+
myArray [0] = 'Москва'
 +
myArray [1] = 'Хабаровськ'
  
  9. var newList = aList.copy();
+
Створення нового масиву і резервування місця для 100 змінних
'''Отримання максимального значення масива'''
+
var myArray = new Array (100)
Максимальний элемент масива може бути отриманий за допомогою функції, добавлену до класу Array:
+
  1. Array.prototype.max = function(){
+
  2.        return Math.max.apply({},this)
+
  3. }
+
Приклад використання:
+
  1. var a = [1,2,3,5,4,3,1,34,32,2,12];
+
  2.
+
  
  3. alert(a.max());    // повертає 34
 
'''Отримання мінімального елемента масива'''
 
Мінімальний элемент масива може бути отриманий за допомогою наступної функції, добавленої до класу Array:
 
  1. Array.prototype.min = function(){
 
  2.        return Math.min.apply({},this)
 
  3. }
 
Приклад використання:
 
  1. var a = [1,2,3,5,4,3,1,34,32,2,12];
 
  2.
 
  
  3. alert(a.min());    // повертає 1
+
Створення нового масиву і явна ініціалізація першого елемента
 +
var myArray = new Array ('Елемент');
 +
 
 +
 
 +
Непряме створення масиву з двох елменетов
 +
var myArray = ['перший елемент', 'другий елемент']
 +
 
 +
Всі масиви, незалежно від способу створення, являють собою екземпляри класу (об'єкта) Array. Додавання елементів проводиться простий ініціалізацією відповідного елемента.
 +
 
 +
var myArray = new Array ()
 +
myArray [0] = 'Пітер'
 +
 
 +
Масиви в JavaScript не обов'язково повинні бути "суцільними", тобто містити всі елементи. При необхідності можна створювати так звані "розріджені" масиви:
 +
 
 +
var myArray = new Array ();
 +
myArray [0] = 'Пітер'
 +
// пропустимо myArray [1]
 +
myArray [2] = 'Гомель'
 +
// пропустимо myArray [3]
 +
myArray [4] = 'Рязань'
 +
myArray [5] = 'Псков'
 +
for (i = 0; i <6; i + +)
 +
alert (myArray [i])
 +
 
 +
Цей код створює масив і заповнює тільки необхідні елементи. Тепер якщо ми спробуємо отримати значення не ініціалізованих елемента (у прикладі це перший і третій), то отримаємо "undefined". Використання розріджених масивів іноді дуже зручно, але вимагає досвіду та уважності, тому на початковому етапі краще від них відмовитися. Крім того, розріджені масиви не дають вигоди з використання пам'яті, тому що місце резервується для всіх елементів, у тому числі не ініціалізованих.
 +
Елементами масиву можуть бути змінні будь-якого типу. Цікава особливість JavaScript - масив може одночасно містити елементи різних типів, у тому числі масиви:
 +
 
 +
 
 +
Масив з елементами різних типів
 +
 
 +
var myArrayS = new Array ();
 +
myArrayS [0] = 'Ярославль';
 +
myArrayS [1] = 10000;
 +
myArrayS [2] = 'Ямал';
 +
myArrayS [3] = 5000;
 +
for (i = 0; i <myArrayS.length; i + = 2)
 +
alert ('Місто:' + myArrayS [i] + '\ n' +
 +
      'Населення:' + myArrayS [i + 1] + '\ n')
 +
 
 +
Масив з елементами-масивами
 +
var myArrayA = new Array ()
 +
myArrayA [0] = new Array ('Ярославль', 10000);
 +
myArrayA [1] = new Array ('Ставрополь', 5000);
 +
for (i = 0; i <myArrayA.length; i + +)
 +
alert ('Місто:' + myArrayA [i] [0] + '\ n' +
 +
      'Населення:' + myArrayA [i] [1] + '\ n')
 +
 
 +
 +
Клас Array містить єдине властивість - length, що дозволяє дізнатися поточну довжину масиву:
 +
 
 +
var myArray = new Array ();
 +
...
 +
// Дізнатися кількість елементів
 +
alert (myArray.length)
 +
// Додати елемент останнім
 +
myArray [myArray.length] = 'останнє значення'
 +
 
 +
Зверніть увагу, що значення Array.length на одиницю більше номера останнього елемента масиву, тому що нумерація в масиві починається з '''нуля''', а властивість length показує загальну кількість елементів.
 +
 
 +
== Методи ==
 +
 
 +
=== push ===
 +
 
 +
'''Cинтаксис'''
 +
 
 +
array.push (elem1, elem2, ...)
 +
 
 +
'''Аргументи'''
 +
 
 +
elem1, elem2, ...
 +
Ці елементи будуть додані в кінець масиву
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Метод push корисний для додавання значень у масив.
 +
 
 +
Він додає елементи, починаючи з поточної довжини length і повертає нову, збільшену довжину масиву.
 +
 
 +
'''Приклад:''' додавання двох елементів
 +
 
 +
// array.length = 2
 +
var array = [ "one", "two" ] 
 +
// додати елементы "three", "four"
 +
var pushed = array.push("three", "four")
 +
// тепер array = [ "one", "two", "three", "four" ]
 +
// array.length = 4
 +
// pushed = 4
 +
 
 +
=== shift ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
var elem = arrayObj.shift ()
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Видаляє елемент з індексом 0 і зрушує інші елементи на один вниз. Повертає видалений елемент
 +
 
 +
var arr = ["мой","маленький", "массив"]
 +
var my = arr.shift() // => "мой"
 +
alert(arr[0]) // => "маленький"
 +
// тепер arr = ["маленький", "массив"]
 +
 
 +
=== join ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.join ([glue])
 +
 
 +
'''Аргументи'''
 +
 
 +
glue
 +
Строковий аргумент, за допомогою якого будуть з'єднані в рядок всі елементи масиву. Якщо аргумент не заданий, елементи будуть сполучені комами.
 +
 
 +
'''Опис, приклади'''
 +
 
 +
var arr = [ 1, 2 , 3 ]
 +
arr.join('+')  // "1+2+3"
 +
arr.join()  // "1,2,3"
 +
 
 +
=== concat ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
var newArray = array.concat (value1, value2, ..., valueN)
 +
 
 +
'''Аргументи'''
 +
 
 +
value1, value2, ...
 +
Масиви або значення для приєднання
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Приклад: об'єднання двох масивів
 +
 
 +
var alpha = ["a", "b", "c"];
 +
var numeric = [1, 2, 3];
 +
// створює масив ["a", "b", "c", 1, 2, 3];
 +
var alphaNumeric = alpha.concat(numeric);
 +
 
 +
Приклад: об'єднання трьох масивів
 +
 
 +
var num1 = [1, 2, 3];
 +
var num2 = [4, 5, 6];
 +
var num3 = [7, 8, 9];
 +
// створює масив [1, 2, 3, 4, 5, 6, 7, 8, 9];
 +
var nums = num1.concat(num2, num3);
 +
 
 +
Приклад: додавання значень у масив
 +
 
 +
var alpha = ['a', 'b', 'c'];
 +
// створює масив ["a", "b", "c", 1, 2, 3]
 +
var alphaNumeric = alpha.concat(1, [2, 3]);
 +
 
 +
=== pop ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.pop ()
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Цей метод змінює вихідний масив.
 +
 
 +
myFish = ["angel", "clown", "mandarin", "surgeon"];
 +
popped = myFish.pop();
 +
// тепер popped = "surgeon"
 +
// myFish = ["angel", "clown", "mandarin"]
 +
 
 +
=== unshift ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.unshift ([elem1 [, elem2 [, ... [, elemN]]]])
 +
 
 +
'''Аргументи'''
 +
 
 +
elem1, elem2, ..., elemN
 +
Додаються в початок масиву елементи. Додані елементи збережуть порядок проходження.
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Даний метод змінює вихідний масив. Додає в нього аргументи і повертає вийшла довжину.
 +
 
 +
var arr = ["a", "b"]
 +
unshifted = arr.unshift(-2, -1);
 +
alert(arr ); // [ -2, -1, "a", "b"]
 +
alert("New length: " + unshifted); // 4
 +
 
 +
=== slice ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.slice (start [, end])
 +
 
 +
'''Аргументи'''
 +
 
 +
''start''
 +
Індекс елемента в масиві, з якого буде починатися новий масив.
 +
 
 +
''end''
 +
Необов'язковий параметр. Індекс елемента в масиві, на якому новий масив завершиться. При цьому останнім у новому масиві буде елемент з індексом end-1
 +
 
 +
Якщо start негативний, то він буде трактуватися як arrayObj.length + start (тобто start'ий елемент з кінця масиву).
 +
Якщо end від'ємний, то він буде трактуватися як arrayObj.length + end (тобто end'ий елемент з кінця масиву).
 +
Якщо другий параметр не вказаний, то екстракція продовжиться до кінця масиву. Якщо end <start, то буде створений порожній масив.
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Даний метод не змінює вихідний масив, а просто повертає його частину.
 +
 
 +
Приклад: Елементи з середини
 +
 
 +
var arr = [ 1, 2, 3, 4, 5 ]
 +
arr.slice(2) // => [3, 4, 5]
 +
arr.slice(1, 4) // => [2, 3, 4]
 +
arr.slice(2, 3) // => [3]
 +
 
 +
Приклад: Відлік з кінця
 +
 
 +
arr = [1, 2, 3, 4, 5]
 +
arr.slice(-2) // => [4, 5]
 +
arr.slice(arr.length - 2) // теж саме
 +
arr.slice(-3, -1) // [3, 4]
 +
arr.slice(arr.length-3, arr.length-1) // теж саме
 +
 
 +
=== reverse ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.reverse ()
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Даний метод змінює вихідний масив.
 +
Після його застосування порядок елементів у масиві змінюється на зворотний.
 +
 
 +
Він повертає посилання на змінений масив.
 +
 
 +
arr = [1,2,3]
 +
a = arr.reverse() // [ 3, 2, 1]
 +
for(var i=0; i<a.length; i++) {
 +
   alert(a[i]) // 3, 2, 1
 +
}
 +
 
 +
Зверніть увагу, ніякого нового масиву не створюється. Змінюється сам масив arr і повертається посилання на змінений масив.
 +
 
 +
arr = [1,2,3]
 +
a = arr.reverse() // [ 3, 2, 1]
 +
alert(a === arr) // true
 +
 
 +
=== sort ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.sort ([sortFunction])
 +
 
 +
'''Аргументи'''
 +
 
 +
''sortFunction''
 +
Необов'язковий параметр - функція сортування.
 +
Якщо вказана функція, то елементи масиву будуть відсортовані згідно значень, що повертаються функцією. Умови на функцію можна записати таким чином:
 +
 
 +
function sortFunction(a, b){
 +
  if(a меньш, за b по деякому критерію)
 +
    return -1 // або будь-яке число, меньше 0
 +
  if(a більше, ніж b по деякому критерію)
 +
    return 1  // або будь-яке число, білше 0
 +
  // у випадку а = b повернути 0
 +
  return 0
 +
}
 +
 
 +
Якщо параметр не вказаний, масив буде відсортований у лексикографічному порядку (зростаючий порядок проходження символів в таблиці  ASCII).
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Даний метод змінює вихідний масив. Одержаний масив також повертається в якості результату.
 +
 
 +
arr = [1,-1, 0]
 +
a = arr.sort()
 +
// => arr = [ -1, 0, 1 ]
 +
alert(a === arr) // => true, це то й же сортований масив
 +
 
 +
=== splice ===
 +
 
 +
'''Синтаксис'''
 +
 
 +
arrayObj.splice (start, deleteCount, [elem1 [, elem2 [, ... [, elemN]]]])
 +
 
 +
'''Аргументи'''
 +
 
 +
''start''
 +
Індекс в масиві, з якого починати видалення.
 +
''deleteCount''
 +
Кількість елементів, яке потрібно видалити, починаючи з індексу start.
 +
IE: якщо цей параметр не вказаний, то жоден елемент не буде видалений.
 +
Firefox: якщо цей параметр не вказаний, то будуть видалені всі елементи, починаючи з індексу start.
 +
Opera: (досліджено у версії 9.61) якщо цей параметр не вказаний, то будуть видалено 1 елемент, що має індекс start +1. У цьому ж випадку замість вилученого елемента буде повернута порожній рядок.
 +
 
 +
elem1, elem2, ..., elemN
 +
Додаються елементи в масив. Додавання починається з позиції start.
 +
 
 +
'''Опис, приклади'''
 +
 
 +
Мабуть, самий комплексний метод для роботи з масивом.
 +
Він об'єднує в собі дві різні функціональності: видаляє частину масиву і додає нові елементи на місце видалених.
 +
При цьому можна звести до нуля кількість видаляються елементів - тоді це буде просто додавання.
 +
І можна не додавати елементів - тоді це буде просто видалення.
 +
Метод повертає масив з видалених елементів.
 +
 
 +
Приклад: Видалення
 +
 
 +
arr = [ "a", "b", "c", "d", "e" ]
 +
removed = arr.splice(1,2)
 +
// removed = [ "b", "c"] (2 елемента с arr[1])
 +
// arr = ["a", "d", "e"] (ті що залишились)
 +
 
 +
Приклад: Видалення одного елемента
 +
 
 +
arr = [ "a", "b", "c", "d", "e" ]
 +
// видалим з індексу 2 один елемент
 +
arr.splice(2,1)
 +
// arr = ["a", "b", "d", "e"]
 +
 
 +
Приклад: Додавання елементів
 +
 
 +
arr = [ "a", "b", "c", "d", "e" ]
 +
// починаючи з індексу 2 видалим 0 елементів
 +
// та добавимо "b+"
 +
arr.splice(2,0,"b+")
 +
// arr = ["a", "b", "b+", "c", "d", "e"]
 +
 
 +
Приклад: З кінця
 +
 
 +
arr = [ "a", "b", "c", "d", "e" ]
 +
// видалим з індексу 1 починаючи з кінця 1 елемент
 +
arr.splice(-1,1)
 +
 
 +
<codeblock type="jsfiddle">YaroslavGolinskij|6s6qE</codeblock>

Поточна версія на 10:14, 26 березня 2015

Масиви - це тип даних, який може містити багато значень. Іншими словами, змінна типу масив - це змінна, яка містить в собі не одне значення (як було раніше), а багато значень одночасно.


Створення

Створення порожнього масиву та задання значень перших двох елементів

var myArray = new Array ()
myArray [0] = 'Москва'
myArray [1] = 'Хабаровськ'

Створення нового масиву і резервування місця для 100 змінних

var myArray = new Array (100)


Створення нового масиву і явна ініціалізація першого елемента

var myArray = new Array ('Елемент');


Непряме створення масиву з двох елменетов

var myArray = ['перший елемент', 'другий елемент']

Всі масиви, незалежно від способу створення, являють собою екземпляри класу (об'єкта) Array. Додавання елементів проводиться простий ініціалізацією відповідного елемента.

var myArray = new Array ()
myArray [0] = 'Пітер'

Масиви в JavaScript не обов'язково повинні бути "суцільними", тобто містити всі елементи. При необхідності можна створювати так звані "розріджені" масиви:

var myArray = new Array (); 
myArray [0] = 'Пітер' 
// пропустимо myArray [1] 
myArray [2] = 'Гомель' 
// пропустимо myArray [3] 
myArray [4] = 'Рязань' 
myArray [5] = 'Псков' 
for (i = 0; i <6; i + +) 
alert (myArray [i]) 

Цей код створює масив і заповнює тільки необхідні елементи. Тепер якщо ми спробуємо отримати значення не ініціалізованих елемента (у прикладі це перший і третій), то отримаємо "undefined". Використання розріджених масивів іноді дуже зручно, але вимагає досвіду та уважності, тому на початковому етапі краще від них відмовитися. Крім того, розріджені масиви не дають вигоди з використання пам'яті, тому що місце резервується для всіх елементів, у тому числі не ініціалізованих. Елементами масиву можуть бути змінні будь-якого типу. Цікава особливість JavaScript - масив може одночасно містити елементи різних типів, у тому числі масиви:


Масив з елементами різних типів

var myArrayS = new Array ();
myArrayS [0] = 'Ярославль';
myArrayS [1] = 10000;
myArrayS [2] = 'Ямал';
myArrayS [3] = 5000;
for (i = 0; i <myArrayS.length; i + = 2)

alert ('Місто:' + myArrayS [i] + '\ n' +

   	   'Населення:' + myArrayS [i + 1] + '\ n')

Масив з елементами-масивами

var myArrayA = new Array ()
myArrayA [0] = new Array ('Ярославль', 10000);
myArrayA [1] = new Array ('Ставрополь', 5000);
for (i = 0; i <myArrayA.length; i + +)

alert ('Місто:' + myArrayA [i] [0] + '\ n' +

   	   'Населення:' + myArrayA [i] [1] + '\ n')


Клас Array містить єдине властивість - length, що дозволяє дізнатися поточну довжину масиву:

var myArray = new Array ();
...
// Дізнатися кількість елементів
alert (myArray.length)
// Додати елемент останнім
myArray [myArray.length] = 'останнє значення' 

Зверніть увагу, що значення Array.length на одиницю більше номера останнього елемента масиву, тому що нумерація в масиві починається з нуля, а властивість length показує загальну кількість елементів.

Методи

push

Cинтаксис

array.push (elem1, elem2, ...)

Аргументи

elem1, elem2, ...

Ці елементи будуть додані в кінець масиву

Опис, приклади

Метод push корисний для додавання значень у масив.

Він додає елементи, починаючи з поточної довжини length і повертає нову, збільшену довжину масиву.

Приклад: додавання двох елементів

// array.length = 2
var array = [ "one", "two" ]  
// додати елементы "three", "four"
var pushed = array.push("three", "four") 
// тепер array = [ "one", "two", "three", "four" ] 
// array.length = 4
// pushed = 4

shift

Синтаксис

var elem = arrayObj.shift ()

Опис, приклади

Видаляє елемент з індексом 0 і зрушує інші елементи на один вниз. Повертає видалений елемент

var arr = ["мой","маленький", "массив"]
var my = arr.shift() // => "мой"
alert(arr[0]) // => "маленький"
// тепер arr = ["маленький", "массив"]

join

Синтаксис

arrayObj.join ([glue])

Аргументи

glue Строковий аргумент, за допомогою якого будуть з'єднані в рядок всі елементи масиву. Якщо аргумент не заданий, елементи будуть сполучені комами.

Опис, приклади

var arr = [ 1, 2 , 3 ]
arr.join('+')  // "1+2+3"
arr.join()  // "1,2,3"

concat

Синтаксис

var newArray = array.concat (value1, value2, ..., valueN)

Аргументи

value1, value2, ...

Масиви або значення для приєднання

Опис, приклади

Приклад: об'єднання двох масивів

var alpha = ["a", "b", "c"];
var numeric = [1, 2, 3];
// створює масив ["a", "b", "c", 1, 2, 3]; 
var alphaNumeric = alpha.concat(numeric);

Приклад: об'єднання трьох масивів

var num1 = [1, 2, 3];
var num2 = [4, 5, 6];
var num3 = [7, 8, 9];
// створює масив [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
var nums = num1.concat(num2, num3);

Приклад: додавання значень у масив

var alpha = ['a', 'b', 'c'];
// створює масив ["a", "b", "c", 1, 2, 3]
var alphaNumeric = alpha.concat(1, [2, 3]);

pop

Синтаксис

arrayObj.pop ()

Опис, приклади

Цей метод змінює вихідний масив.

myFish = ["angel", "clown", "mandarin", "surgeon"]; popped = myFish.pop(); // тепер popped = "surgeon" // myFish = ["angel", "clown", "mandarin"]

unshift

Синтаксис

arrayObj.unshift ([elem1 [, elem2 [, ... [, elemN]]]])

Аргументи

elem1, elem2, ..., elemN

Додаються в початок масиву елементи. Додані елементи збережуть порядок проходження.

Опис, приклади

Даний метод змінює вихідний масив. Додає в нього аргументи і повертає вийшла довжину.

var arr = ["a", "b"]
unshifted = arr.unshift(-2, -1);
alert(arr ); // [ -2, -1, "a", "b"]
alert("New length: " + unshifted); // 4

slice

Синтаксис

arrayObj.slice (start [, end])

Аргументи

start Індекс елемента в масиві, з якого буде починатися новий масив.

end Необов'язковий параметр. Індекс елемента в масиві, на якому новий масив завершиться. При цьому останнім у новому масиві буде елемент з індексом end-1

Якщо start негативний, то він буде трактуватися як arrayObj.length + start (тобто start'ий елемент з кінця масиву). Якщо end від'ємний, то він буде трактуватися як arrayObj.length + end (тобто end'ий елемент з кінця масиву). Якщо другий параметр не вказаний, то екстракція продовжиться до кінця масиву. Якщо end <start, то буде створений порожній масив.

Опис, приклади

Даний метод не змінює вихідний масив, а просто повертає його частину.

Приклад: Елементи з середини

var arr = [ 1, 2, 3, 4, 5 ] 
arr.slice(2) // => [3, 4, 5]
arr.slice(1, 4) // => [2, 3, 4]
arr.slice(2, 3) // => [3]

Приклад: Відлік з кінця

arr = [1, 2, 3, 4, 5]
arr.slice(-2) // => [4, 5]
arr.slice(arr.length - 2) // теж саме
arr.slice(-3, -1) // [3, 4]
arr.slice(arr.length-3, arr.length-1) // теж саме

reverse

Синтаксис

arrayObj.reverse ()

Опис, приклади

Даний метод змінює вихідний масив. Після його застосування порядок елементів у масиві змінюється на зворотний.

Він повертає посилання на змінений масив.

arr = [1,2,3]
a = arr.reverse() // [ 3, 2, 1]
for(var i=0; i<a.length; i++) {
  alert(a[i]) // 3, 2, 1
}

Зверніть увагу, ніякого нового масиву не створюється. Змінюється сам масив arr і повертається посилання на змінений масив.

arr = [1,2,3]
a = arr.reverse() // [ 3, 2, 1]
alert(a === arr) // true

sort

Синтаксис

arrayObj.sort ([sortFunction])

Аргументи

sortFunction Необов'язковий параметр - функція сортування. Якщо вказана функція, то елементи масиву будуть відсортовані згідно значень, що повертаються функцією. Умови на функцію можна записати таким чином:

function sortFunction(a, b){
 if(a меньш, за b по деякому критерію)
    return -1 // або будь-яке число, меньше 0
 if(a більше, ніж b по деякому критерію)
    return 1  // або будь-яке число, білше 0
 // у випадку а = b повернути 0
 return 0
}

Якщо параметр не вказаний, масив буде відсортований у лексикографічному порядку (зростаючий порядок проходження символів в таблиці ASCII).

Опис, приклади

Даний метод змінює вихідний масив. Одержаний масив також повертається в якості результату.

arr = [1,-1, 0]
a = arr.sort() 
// => arr = [ -1, 0, 1 ]
alert(a === arr) // => true, це то й же сортований масив

splice

Синтаксис

arrayObj.splice (start, deleteCount, [elem1 [, elem2 [, ... [, elemN]]]])

Аргументи

start Індекс в масиві, з якого починати видалення. deleteCount Кількість елементів, яке потрібно видалити, починаючи з індексу start. IE: якщо цей параметр не вказаний, то жоден елемент не буде видалений. Firefox: якщо цей параметр не вказаний, то будуть видалені всі елементи, починаючи з індексу start. Opera: (досліджено у версії 9.61) якщо цей параметр не вказаний, то будуть видалено 1 елемент, що має індекс start +1. У цьому ж випадку замість вилученого елемента буде повернута порожній рядок.

elem1, elem2, ..., elemN

Додаються елементи в масив. Додавання починається з позиції start.

Опис, приклади

Мабуть, самий комплексний метод для роботи з масивом. Він об'єднує в собі дві різні функціональності: видаляє частину масиву і додає нові елементи на місце видалених. При цьому можна звести до нуля кількість видаляються елементів - тоді це буде просто додавання. І можна не додавати елементів - тоді це буде просто видалення. Метод повертає масив з видалених елементів.

Приклад: Видалення

arr = [ "a", "b", "c", "d", "e" ]
removed = arr.splice(1,2) 
// removed = [ "b", "c"] (2 елемента с arr[1])
// arr = ["a", "d", "e"] (ті що залишились)

Приклад: Видалення одного елемента

arr = [ "a", "b", "c", "d", "e" ]
// видалим з індексу 2 один елемент
arr.splice(2,1) 
// arr = ["a", "b", "d", "e"]

Приклад: Додавання елементів

arr = [ "a", "b", "c", "d", "e" ]
// починаючи з індексу 2 видалим 0 елементів 
// та добавимо "b+"
arr.splice(2,0,"b+")
// arr = ["a", "b", "b+", "c", "d", "e"]

Приклад: З кінця

arr = [ "a", "b", "c", "d", "e" ]
// видалим з індексу 1 починаючи з кінця 1 елемент
arr.splice(-1,1)