В JavaScript масивът е специален тип обект, който съхранява колекция от стойности. Всяка стойност в масив се нарича елемент, а елементите са подредени и могат да бъдат достъпни чрез техния индекс (числова позиция в масива).
Ето пример за масив:
let numbers = [1, 2, 3, 4, 5]; console.log(numbers[2]); // Output: 3
В този пример масивът „numbers“ съдържа 5 елемента: 1, 2, 3, 4 и 5. Елементите са подредени и могат да бъдат достъпни чрез техния индекс. В примера по-горе numbers[2]
връща 3-тия елемент в масива, който е 3.
От друга страна, обект в JavaScript е колекция от двойки ключ-стойност. Всеки ключ е низ и всяка стойност може да бъде от произволен тип. Обектите в JavaScript са неподредени и могат да бъдат достъпни чрез техните ключове.
Ето пример за обект:
let person = { name: "John", age: 30, job: "Developer" }; console.log(person.name); // Output: "John"
В този пример обектът „person“ съдържа 3 двойки ключ-стойност: „name“ със стойност „John“, „age“ със стойност 30 и „job“ със стойност „Developer“. Ключовете са „име“, „възраст“ и „работа“, а стойностите са съответно „Джон“, 30 и „Разработчик“. Можете да получите достъп до стойностите на обекта, като използвате нотацията с точка object.key
или нотацията със скоби object["key"]
. в примера по-горе person.name
връща стойността на ключа 'name' в обекта, който е 'John'.
Обектите и масивите са два основни типа данни в JavaScript и се използват широко в много приложения. Те са многофункционални и могат да се използват за съхраняване и организиране на данни по различни начини.
Манипулиране на масиви и обекти
Ето пример за манипулиране на масив в JavaScript:
let arr = [1, 2, 3, 4, 5]; // add an element to the end of the array arr.push(6); console.log(arr); // [1, 2, 3, 4, 5, 6] // remove an element from the end of the array let last = arr.pop(); console.log(last); // 6 console.log(arr); // [1, 2, 3, 4, 5] // add an element to the beginning of the array arr.unshift(0); console.log(arr); // [0, 1, 2, 3, 4, 5] // remove an element from the beginning of the array let first = arr.shift(); console.log(first); // 0 console.log(arr); // [1, 2, 3, 4, 5]
И ето пример за манипулиране на обект в JavaScript:
let obj = { name: 'John', age: 30, city: 'New York' }; // add a new property to the object obj.gender = 'male'; console.log(obj); // { name: 'John', age: 30, city: 'New York', gender: 'male' } // update a property of the object obj.age = 35; console.log(obj); // { name: 'John', age: 35, city: 'New York', gender: 'male' } // remove a property from the object delete obj.gender; console.log(obj); // { name: 'John', age: 35, city: 'New York' }
Рециклиране на масиви и обекти
Ето пример за преминаване през масив в JavaScript с помощта на цикъла for
:
let arr = [1, 2, 3, 4, 5]; for (let i = 0; i < arr.length; i++) { console.log(arr[i]); } // Output: 1, 2, 3, 4, 5
И ето пример за преминаване през масив в JavaScript с помощта на метода forEach
:
let arr = [1, 2, 3, 4, 5]; arr.forEach(function(element) { console.log(element); }); // Output: 1, 2, 3, 4, 5
Ето пример за преминаване през обект в javascript с помощта на for in
цикъл:
let obj = { name: "John", age: 30, city: "New York" }; for (let key in obj) { console.log(key + ": " + obj[key]); } // Output: name: John, age: 30, city: New York
И ето пример за преминаване през обект в javascript с помощта на Object.keys()
и forEach
:
let obj = { name: "John", age: 30, city: "New York" }; Object.keys(obj).forEach(function(key) { console.log(key + ": " + obj[key]); }); // Output: name: John, age: 30, city: New York
Струва си да се отбележи, че цикълът for...in
не се препоръчва за масиви, тъй като той обхожда свойствата във веригата на прототипа, а не само тези в самия обект.
Операции с масиви
Ето няколко примера за общи операции с масиви в JavaScript:
1.concat()
: Този метод се използва за обединяване на два или повече масива. Той връща нов масив, който съдържа всички елементи от оригиналните масиви:
let arr1 = [1, 2, 3]; let arr2 = [4, 5, 6]; let newArr = arr1.concat(arr2); console.log(newArr); // [1, 2, 3, 4, 5, 6]
2. slice()
: Този метод се използва за извличане на секция от масив и връща нов масив. Необходими са два аргумента: начален индекс и краен индекс:
let arr = [1, 2, 3, 4, 5]; let subArr = arr.slice(1, 3); console.log(subArr); // [2, 3]
3. splice()
: Този метод се използва за добавяне или премахване на елементи от масив. Необходими са три аргумента: начален индекс, брой елементи за премахване и елементи за добавяне:
let arr = [1, 2, 3, 4, 5]; arr.splice(1, 2, 6, 7); console.log(arr); // [1, 6, 7, 4, 5]
4. sort()
: Този метод се използва за сортиране на елементите на масив. Той приема незадължителна функция за сравнение като аргумент:
let arr = [3, 2, 1, 4, 5]; arr.sort(); console.log(arr); // [1, 2, 3, 4, 5]
5. filter()
: Този метод създава нов масив с всички елементи, които преминават теста, реализиран от предоставената функция.
let arr = [1, 2, 3, 4, 5, 6]; let evenNumbers = arr.filter(num => num % 2 === 0); console.log(evenNumbers); // [2, 4, 6]
6. map()
: Този метод създава нов масив с резултатите от извикване на предоставена функция за всеки елемент в извикващия масив.
let arr = [1, 2, 3, 4, 5]; let doubled = arr.map(num => num * 2); console.log(doubled); // [2, 4, 6, 8, 10]
7. reduce()
: Методът reduce() прилага функция срещу акумулатор и всеки елемент в масива (отляво надясно), за да го намали до една стойност.
let arr = [1, 2, 3, 4]; let sum = arr.reduce((acc, curr) => acc + curr); console.log(sum); // 10
Това са само няколко примера, има много повече методи за масиви, налични в javascript, които можете да използвате за извършване на различни операции с масиви.
Операции с обекти
Ето няколко примера за общи операции с обекти в JavaScript:
1. Object.assign()
: Този метод се използва за копиране на стойностите на всички изброими собствени свойства от един или повече изходни обекти към целеви обект. Връща целевия обект.
let obj1 = { name: "John" }; let obj2 = { age: 30 }; let obj3 = Object.assign(obj1, obj2); console.log(obj3); // { name: "John", age: 30 }
2. Object.keys()
: Този метод връща масив от имена на свойства на даден обект.
let obj = { name: "John", age: 30, city: "New York" }; console.log(Object.keys(obj)); // ["name", "age", "city"]
3. Object.values()
: Този метод връща масив от собствени стойности на изброими свойства на даден обект.
let obj = { name: "John", age: 30, city: "New York" }; console.log(Object.values(obj)); // ["John", 30, "New York"]
4. Object.entries()
: Този метод връща масив от двойки собствени изброими свойства [ключ, стойност] на даден обект.
let obj = { name: "John", age: 30, city: "New York" }; console.log(Object.entries(obj)); // [["name", "John"], ["age", 30], ["city", "New York"]]
5. Object.freeze()
: Този метод се използва за предотвратяване на добавяне на нови свойства към обект или премахване на съществуващи свойства и предотвратяване на промяна на съществуващи свойства или тяхната възможност за изброяване, конфигуриране или запис.
let obj = { name: "John", age: 30 }; Object.freeze(obj); obj.name = "Jane"; console.log(obj.name); // "John"
6. Object.seal()
: Този метод се използва за предотвратяване на добавянето на нови свойства към обект и предотвратяване на премахването на съществуващи свойства.
let obj = { name: "John", age: 30 }; Object.seal(obj); delete obj.name; console.log(obj.name); // "John"
7. Object.create()
: Този метод създава нов обект с посочения прототипен обект и свойства.
let obj = { name: "John" }; let newObj = Object.create(obj); console.log(newObj.name); // "John"
Това са само няколко примера, има много повече обектни методи, налични в javascript, които можете да използвате за извършване на различни обектни операции.