# JavaScript massivlar (array)

> JavaScript massivlari: element qo'shish va o'chirish, indeks orqali murojaat, uzunlik va kesish. Bir nechta qiymatni bitta o'zgaruvchida saqlashni o'rganing.

Manba: https://learncode.uz/javascript/massivlar/
Sana: 2026-05-27

Bitta o'zgaruvchi bitta qiymat saqlaydi. O'nta mahsulot nomi kerak bo'lsa,
o'nta o'zgaruvchi yaratish mantiqsiz. **Massiv** — tartiblangan qiymatlar
ro'yxati.

## Massiv yaratish

```js
const fruits = ["olma", "banan", "uzum"];

console.log(fruits);
console.log(fruits.length);
```

Elementlar kvadrat qavs ichida, vergul bilan ajratiladi. `length` — massivdagi
elementlar soni.

## Indeks — element o'rni

```js
const fruits = ["olma", "banan", "uzum"];

console.log(fruits[0]);
console.log(fruits[2]);
console.log(fruits[10]);
```

**Sanoq noldan boshlanadi**: birinchi element `[0]`, ikkinchisi `[1]`.
Mavjud bo'lmagan indeks `undefined` qaytaradi — xato bermaydi.

Oxirgi elementni olish uchun:

```js
const fruits = ["olma", "banan", "uzum"];

console.log(fruits[fruits.length - 1]);
console.log(fruits.at(-1));
```

`at(-1)` — zamonaviy va qisqaroq usul.

## Elementni o'zgartirish

```js
const fruits = ["olma", "banan", "uzum"];

fruits[1] = "shaftoli";
console.log(fruits);
```

> **const bo'lsa ham o'zgardi?**
>
> `const` massivning **o'ziga** yangi qiymat berishni taqiqlaydi
> (`mevalar = [...]` xato beradi), lekin **ichidagi** elementlarni o'zgartirishga
> to'sqinlik qilmaydi. Shuning uchun massivlar odatda `const` bilan e'lon
> qilinadi.

## Qo'shish va o'chirish

```js
const list = ["olma", "banan"];

list.push("uzum");
console.log(list);

const last = list.pop();
console.log(last, "|", list);

list.unshift("anor");
console.log(list);

list.shift();
console.log(list);
```

| Metod | Vazifasi |
|---|---|
| `push()` | oxiriga qo'shadi |
| `pop()` | oxirgisini olib tashlaydi va **qaytaradi** |
| `unshift()` | boshiga qo'shadi |
| `shift()` | birinchisini olib tashlaydi |

## Element bormi

```js
const fruits = ["olma", "banan", "uzum"];

console.log(fruits.includes("banan"));
console.log(fruits.includes("anor"));
console.log(fruits.indexOf("uzum"));
console.log(fruits.indexOf("anor"));
```

`indexOf` element topilmasa `-1` qaytaradi — bu tekshirish uchun ishlatiladi.

## Massiv ustidan yurish

[Sikllar](https://learncode.uz/javascript/sikllar) darsidagi `for...of` massiv bilan ishlashda
eng qulay shakl — indeks bilan ovora bo'lmaysiz:

```js
const prices = [8000, 12000, 15000];
let total = 0;

for (const price of prices) {
  total += price;
}

console.log("Jami:", total);
```

## Kesish — bir qismini olish

```js
const numbers = [1, 2, 3, 4, 5];

console.log(numbers.slice(1, 3));
console.log(numbers.slice(2));
console.log(numbers);
```

`slice` **yangi massiv** qaytaradi, asl massivga tegmaydi. Chegara: birinchi
indeks kiradi, ikkinchisi kirmaydi.

## Massivni matnga aylantirish

```js
const fruits = ["olma", "banan", "uzum"];

console.log(fruits.join(", "));
console.log(fruits.join(" — "));
```

## Amaliy mashq

Xaridlar ro'yxatini boshqaring:

1. Uchta mahsulotli massiv yarating;
2. `push` bilan ikkita yangi mahsulot qo'shing;
3. indeks orqali birinchi elementni o'zgartiring;
4. `pop` bilan oxirgisini o'chirib, o'zgaruvchiga saqlang;
5. `includes` bilan biror mahsulot borligini tekshiring;
6. `join` bilan ro'yxatni bitta matn qilib chiqaring.

`pop()` qaytargan qiymatni chiqarib ko'ring — nima qaytdi?

## Qisqacha xulosa

- **Massiv** — tartiblangan qiymatlar ro'yxati: `[1, 2, 3]`.
- Indeks **noldan** boshlanadi; `length` — elementlar soni; `at(-1)` — oxirgisi.
- `push`/`pop` — oxiridan, `unshift`/`shift` — boshidan qo'shish va o'chirish.
- `includes` va `indexOf` — element borligini tekshiradi.
- `slice` yangi massiv qaytaradi, `join` matnga aylantiradi.

Keyingi darsda [massiv metodlari](https://learncode.uz/javascript/massiv-metodlari) — `map`,
`filter` va `reduce` bilan ma'lumotni qayta ishlashni ko'ramiz.
