В 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, които можете да използвате за извършване на различни обектни операции.