{Масиви}

Какво е масив?

Масивите са неизменна част от езиците за програмиране. Масивът представлява съвкупност от елементи, номерирани (индексирани) с числата 0, 1, 2, … и т.н. Броят на елементите в един масив се нарича негова дължина.

Декларации на масиви

Има два синтаксиса за деклариране на празен масив:

let arr = new Array();
let arr = [];

По-популярен е вторият синтаксис. Можем да укажем елементите намасива, като ги поставим в скобите:

let fruits = ["Apple", "Orange", "Plum"];

Обръщаме се към елементите на масива чрез техните индекси, поставени в квадратни скоби:

let fruits = ["Apple", "Orange", "Plum"];

alert( fruits[0] ); // Apple
alert( fruits[1] ); // Orange
alert( fruits[2] ); // Plum

Можем да заменим съдържанието на елемент от масива:

fruits[2] = 'Pear'; // сега масива е ["Apple", "Orange", "Pear"]

Можем да добавим нов елемент в масива:

fruits[3] = 'Lemon'; // сега масива е ["Apple", "Orange", "Pear", "Lemon"]

Дължината на масива се съдържа в свойството му length:

let fruits = ["Apple", "Orange", "Kiwi"];

alert( fruits.length ); // 3

Ако използваме името на масива без квадратни скоби, можем да изведем целия масив:

let fruits = ["Apple", "Orange", "Plum"];

alert( fruits ); // Apple,Orange,Plum

Масивите огат да съдържат елементи от какъвто и да е тип:

let arr = [ 'Apple', { name: 'John' }, true, function() { alert('hello'); } ];

alert( arr[1].name ); // John

arr[3](); // hello

Задаването на масив може да завършва със запетая:

let fruits = [
  "Apple",
  "Orange",
  "Plum",
];

този синтаксис улеснява вмъкването и премахването на елементи от масива, защото всички редове имат еднаква структура.

Методи pop/push и shift/unshift

pop() – извлича (и премахва) последният елемент от масива.

let fruits = ["Apple", "Orange", "Pear"];

alert( fruits.pop() ); // премахва "Pear" и го извежда

alert( fruits ); // Apple, Orange

push() – добавя елемент в края на масива.

let fruits = ["Apple", "Orange"];

fruits.push("Pear");

alert( fruits ); // Apple, Orange, Pear

shift() – извлича (и премахва) първият елемент от масива.

let fruits = ["Apple", "Orange", "Pear"];

alert( fruits.shift() ); // премахва "Apple" и го извежда

alert( fruits ); // Orange, Pear

unshift() – добавя елемент в началото на масива.

let fruits = ["Orange", "Pear"];

fruits.unshift('Apple');

alert( fruits ); // Apple, Orange, Pear

Цикли

for

let arr = ["Apple", "Orange", "Pear"];
// извеждане на масива по елементи
for (let i = 0; i < arr.length; i++) {
  alert( arr[i] );
}

for … of

let fruits = ["Apple", "Orange", "Plum"];

// извеждане елементите на масива
for (let fruit of fruits) {
  alert( fruit );
}

Размер на масив (свойство length)

Свойството length се актуализира автоматично, когато модифицираме масива. За да бъдем точни, всъщност това не е броят на стойностите в масива, а най-големият цифров индекс плюс едно.

let fruits = [];
fruits[123] = "Apple";

alert( fruits.length ); // 124

Обикновено не се използват масиви като в горния пример.
Друга особеност на свойството length e, че можем да записваме в него (т.е. можем нампример ръчно да го променим). В случай, че го увеличим, не се случва нищо. Ако го намалим обаче, масивът ще бъде съкратен, като действието е НЕОБРАТИМО.

let arr = [1, 2, 3, 4, 5];

arr.length = 2; // съкращава масива до 2 елемента
alert( arr ); // [1, 2]

arr.length = 5; // връщаме размера отново на 5
alert( arr[3] ); // undefined: търсеният елемент не съществува

Преобразуване на масив в низ

Масивите имат собствена реализация на метод toString(), връщащ списък от елементите на масива, разделени със запетая.

let arr = [1, 2, 3];

alert(arr); // 1,2,3
alert(String(arr) === '1,2,3'); // true

Преобразуване на низ в масив

Методът split() се използва за разделяне на низ в масив от поднизове и връща новосъздадения масив.

Синтаксис: string.split(separator, limit)

separator – не е задължителен. Задава символа или регулярния израз, който ще се използва за разделяне на низа. Ако е пропуснат, ще бъде върнат целият низ (масив с само един елемент).
limit – не е задължителен. Цяло число, което указва броя на разделенията. Елементите след ограничението за разделяне няма да бъдат включени в масива.

let str = 'How are you doing today?';
let arr = str.split(' ');
alert(arr); // How,are,you,doing,today?
let str = 'How are you doing today?';
let arr = str.split(' ', 3);
alert(arr); // How,are,you

Още методи за работа с масиви

join() – обединява всички елементи на масива в низ. При него може да се укаже разделител.

var fruits = ["Banana", "Orange", "Apple", "Mango"];
alert(fruits.join('*')) //Banana*Orange*Apple*Mango

sort() – методът сортира масив по азбучен ред

let fruits = ["Banana", "Orange", "Apple", "Mango"];
alert(fruits.sort()); //Apple,Banana,Mango,Orange
let fruits = [11, 1, 111, 2, 4, 44];
alert(fruits.sort()); //1,11,111,2,4,44

reverse() – методът обръща реда на елементите в масив. Може да се използва, за сортиране на масив в низходящ ред.

let fruits = ["Banana", "Orange", "Apple", "Mango"];
alert(fruits.sort());        // Apple,Banana,Mango,Orange
alert(fruits.reverse());     // Orange,Mango,Banana,Apple
Реклами