JavaScript,  Programowanie

Tablice w JavaScript

Tablice w JavaScript służą do przechowywania wielu wartości pod postacią jednej zmiennej.

const pojazdy = ['BMW', 'Renault', 'Fiat']

Tworzenie i inicjalizacja tablicy:

const a = []
const a = [1, 2, 3]
const a = Array.of('A', 'B', 'C') 
// tworzy tablicę z 3 elementami A, B i C
const a = Array(6).fill('D')
// tworzy tablicę z 6 elementami o wartości D

Nie zaleca się używania operatora new do tworzenia tablic.

const a = [1, 2, 3] // Dobrze
const a = new Array(1, 2, 3) // Źle

Operator new można pominąć:

const a = Array('Jan')

Dlaczego nie używać operatora new? Łatwo o pomyłkę gdy mieszamy kod według nowego i poprzedniego standardu. Spójrz na kod:

const a = Array(10)
const a = [10]

Czy wydaje Ci się, że obie deklaracje są takie same? Otóż nie.

const a = Array(10) // tworzy tablicę 10 elementową
const a = [10] // tworzy jednoelementową tablicę z wartością 10

Znajdowanie elementu w tablicy

a.find(callback, thisValue)

Find zwraca pierwszy znaleziony element, który spełnia warunek (funkcja callback zwraca true) albo undefined jeśli elementu nie odnaleziono.

Parametry funkcji testującej callback:
item
obowiązkowo. Aktualnie iterowany element

index
opcjonalnie. Indeks aktualnie przetwarzanego elementu

array
opcjonalnie. Tablica, na której wywołano funkcję find

thisValue
opcjonalnie. Obiekt, który będzie znajdował się pod operatorem this w funkcji callback

Bardzo często funkcja ta używana jest w skróconej postaci:

let book = a.find(item => item.id === my_id)

Powyższy kod zwróci pierwszy element (tutaj obiekt) z tablicy dla którego spełniony jest warunek item.id === my_id

Mapowanie tablicy

Funkcja map pozwala nam na wykonanie na każdym z elementów tablicy jakiejś operacji. Zwracana jest zmieniona tablica. Tablica źródłowa nie ulega zmianie.

Składnia funkcji:

nowaTablica = tablica.map(function callback(item, index, array))

Parametry funkcji testującej callback:
item
obowiązkowo. Aktualnie iterowany element

index
opcjonalnie. Indeks aktualnie przetwarzanego elementu

array
opcjonalnie. Tablica, na której wywołano funkcję map

thisValue
opcjonalnie. Obiekt, który będzie znajdował się pod operatorem this w funkcji callback

// Mnożenie przez 2 każdego z elementów tablicy 
const a = [1, 2, 3]
const b = a.map(item => item * 2)
// [2, 4, 6]
const a = ['Ford', 'Fiat', 'Renault']
const b = a.map((item, idx) => {
    return `<option key=${idx}>${item}</option>`
})
// [<option key=1>Ford</option>, <option key=2>Fiat</option>, 
//   <option key=3>Renault</option>]

const s = b.join(' ') // łączymy elementy tablicy spacją
// "<option key=0>Ford</option> <option key=1>Fiat</option> <option // key=2>Renault</option>"

Dodawanie elementu do tablicy

Na koniec tablicy:

const a = [1, 2, 3]
a.push(4)
// [0, 1, 2, 3, 4]

Na początek tablicy:

a.unshift(0) // dopisuje 0 na początku tablicy
// [0, 1, 2, 3, 4]
a.unshift(-3, -2, -1)
// [-3, -2, -1, 0, 1, 2, 3, 4]

Usuwanie elementów z tablicy:

Ostatni element w tablicy:

const a = [1, 2, 3]
a.pop()
// [1, 2]

Pierwszy element w tablicy:

const a = [1, 2, 3]
a.shift()
// [2, 3]

Z dowolnej pozycji tablicy:

const a = [1, 2, 3]
a.splice(0, 1) // 0 - pozycja gdzie dodać element, 
// 1 - ile elementów
// [2, 3]

Łączenie tablic

const a = [1, 2, 3]
const b = [4, 5]
a.concat(b)
// [1, 2, 3, 4, 5]
const a = ['Jacek', 'Tomek', 'Marcin']
const b = a.concat('Agata', 'Basia')
// ['Jacek', 'Tomek', 'Marcin', 'Agata', 'Basia']

Przekształcenie tablicy na łańcuch tekstowy (string)

const a = [1, 2, 3]
a.toString()
// 1,2,3

Do przekształcenia tablicy na tekst można też użyć funkcji join. Pozwala ona na określenie separatora elementów.

const a = [1, 2, 3]
a.join(' * ')
// 1 * 2 * 3
a.join('; ')
// 1; 2; 3

Sortowanie tablicy

Funkcja sort porządkuje tablicę alfabetycznie: 0-9 A-Z a-z

const a = [1, 2, 3, 10, 11]
a.sort()
// 1, 10, 11, 2, 3
const a = [1, 'a', 'Z', 3, 2, 11]
a.sort()
// 1, 11, 2, 3, Z, a

Pomocne może być użycie funkcji:

const a = [1, 10, 2, 11]
a.sort((a, b) => a - b)
// 1, 2, 10, 11

Jestem mężem, ojcem, programistą, projektantem, analitykiem, amatorskim gitarzystą...

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *