2023-10-11 10:26 Doba čtení: 13 min

Jak odstranit prvek z Array JavaScript a Craft Clean Code

Při programování v JavaScriptu se často pracuje s poli (Arrays). Jakým způsobem lze efektivně odstranit konkrétní prvek z takového pole?

V JavaScriptu je pole globálním objektem sloužícím k ukládání dat. Pole mohou představovat uspořádané kolekce prvků, obsahující nula nebo více datových typů. Pro přístup k jednotlivým prvkům pole se používají číselné indexy, které začínají od nuly.

V tomto článku si rozebereme syntaxi pro vytváření polí v JavaScriptu, důvody, proč může být nutné odebírat prvky, a různé metody pro odstranění prvků z polí, ať už s mutací, nebo bez mutace původního pole.

Syntaxe pro pole v JavaScriptu

Pole nám umožňují ukládat více hodnot do jedné proměnné. Například, pokud bychom chtěli reprezentovat sedm kontinentů, mohli bychom napsat:

const continent1 = "Asie";
const continent2 = "Afrika";
const continent3 = "Severní Amerika";
const continent4 = "Jižní Amerika";
const continent5 = "Antarktida";
const continent6 = "Evropa";
const continent7 = "Austrálie"

Tento kód lze ale zjednodušit a reprezentovat pomocí pole:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];

Místo sedmi proměnných máme pouze jednu a k reprezentaci našich hodnot používáme hranaté závorky.

Pro přístup k prvnímu kontinentu v seznamu bychom použili příkaz: console.log(continents[0]).

Pro testování svého kódu můžete využít online kompilátor JavaScriptu.

Získáme tak výstup:

Chcete-li získat přístup k poslední položce v poli, použijte příkaz: console.log(continents[6]).

Je důležité si uvědomit, že číslování indexů v JavaScriptu začíná od nuly.

Proč odstraňovat prvky z pole v JavaScriptu?

Pole v JavaScriptu mohou obsahovat řetězce, čísla a různé datové struktury. Někdy však může být nezbytné odstranit jeden nebo více prvků. Mezi důvody patří:

  • Zpracování dynamických dat: Pole mohou ukládat dynamické sady dat, ze kterých může být nutné odstraňovat prvky na základě aktuálních požadavků.
  • Zachování integrity dat: Odstraňováním zastaralých informací z polí zajistíte, že data zůstanou aktuální.
  • Správa paměti: Velikost kódu ovlivňuje výkon aplikace. Odstraňováním nepotřebných informací z polí lze kód optimalizovat.

Odstranění prvků bez změny původního pole

Pokud chcete odstranit prvek z pole, aniž byste měnili původní pole, je nejlepší vytvořit nové pole bez daného prvku. Tento přístup se hodí, pokud je pole předáváno jako parametr do funkce. Můžete použít následující metody:

#1. Odstranění prvku pomocí slice()

První prvek z našeho seznamu můžeme odstranit pomocí metody slice().

Náš původní kód:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];

Vytvoříme nové pole takto:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];
// Odstranění prvního prvku pomocí slice
let newContinents = continents.slice(1);
// Výpis nového pole
console.log(newContinents);

Výsledkem bude:

[
  'Afrika',
  'Severní Amerika',
  'Jižní Amerika',
  'Antarktida',
  'Evropa',
  'Austrálie'
]

#2. Odstranění prvního prvku pomocí filter()

Metoda filter() vytváří nové pole s prvky, které splňují určitou podmínku. Můžeme nastavit podmínku, která vyloučí první prvek z pole. Postup:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];
// Odstranění prvního prvku pomocí filter()
let newContinents = continents.filter((continent, index) => index !== 0);
console.log(newContinents);

Výstupem bude:

[
  'Afrika',
  'Severní Amerika',
  'Jižní Amerika',
  'Antarktida',
  'Evropa',
  'Austrálie'
]

#3. Použití slice() s concat() pro odstranění prvku z libovolné pozice

Předchozí příklad odstranil první prvek. Co když chceme odstranit například třetí nebo čtvrtý? Zkombinujeme metody slice() a concat(). V následujícím příkladu odstraníme čtvrtý prvek:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];

// Odstranění čtvrtého prvku pomocí slice a concat
let continentsWithoutFourth = continents.slice(0, 3).concat(continents.slice(4));
console.log(continentsWithoutFourth);

Výstup:

[
  'Asie',
  'Afrika',
  'Severní Amerika',
  'Antarktida',
  'Evropa',
  'Austrálie'
]

Metoda slice() vytvoří dvě nové části pole. Poté pomocí metody concat() tyto části spojíme, přičemž čtvrtý prvek vynecháme. Tento přístup můžeme použít pro odstranění libovolného prvku.

#4. Odstranění prvku pomocí cyklu for a push()

Pátý prvek můžeme vynechat pomocí cyklu for a metody push():

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];

// Odstranění pátého prvku pomocí cyklu for a push
let continentsWithoutFifth = [];
for (let i = 0; i < continents.length; i++) {
  if (i !== 4) {
    continentsWithoutFifth.push(continents[i]);
  }
}
console.log(continentsWithoutFifth);

Cyklus for iteruje přes každý prvek v poli. Podmínka if kontroluje, zda se aktuální index nerovná čtyřem. Pokud je podmínka splněna, prvek je vložen do nového pole.

Výstupem bude:

[
  'Asie',
  'Afrika',
  'Severní Amerika',
  'Jižní Amerika',
  'Evropa',
  'Austrálie'
]

Odstranění prvků změnou původního pole

Původní pole můžeme změnit odstraněním prvku. Mezi metody patří:

#1. Odstranění prvku pomocí pop()

Pro odstranění posledního prvku z pole kontinentů můžeme použít metodu pop(). Náš původní kód:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];

Odstranění posledního prvku:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];

// Odstranění posledního prvku pomocí pop
let lastContinent = continents.pop();

Po spuštění

console.log("Aktualizované pole kontinentů:", continents);

Aktualizované pole bude:

Aktualizované pole kontinentů: [
  'Asie',
  'Afrika',
  'Severní Amerika',
  'Jižní Amerika',
  'Antarktida',
  'Evropa'
]

Odstraněný prvek lze také zkontrolovat:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];
// Odstranění posledního prvku pomocí pop
let lastContinent = continents.pop();
console.log("Odstraněný kontinent:", lastContinent);

#2. Odstranění prvku pomocí splice()

Metoda splice() umožňuje odstranit prvky od určitého indexu. Následující kód odstraní prvek z indexu 2:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];
// Odstranění prvku z indexu 2 pomocí splice
let removedElement = continents.splice(2, 1);
console.log("Odstraněný prvek:", removedElement);
console.log("Aktualizované pole kontinentů:", continents);

Tento kód upraví původní pole a vrátí nové pole. Dva příkazy console.log slouží k zobrazení 'Odstraněný prvek' a 'Aktualizované pole kontinentů'.

Výstup:

Odstraněný prvek: [ 'Severní Amerika' ]
Aktualizované pole kontinentů: [
  'Asie',
  'Afrika',
  'Jižní Amerika',
  'Antarktida',
  'Evropa',
  'Austrálie'
]

#3. Odstranění prvního prvku pomocí shift()

Metoda shift() odstraní první prvek z pole. Tato metoda mění původní pole a vrací odstraněný prvek. Použijeme opět naše pole kontinentů.

Odstranění prvního prvku:

let continents = ['Asie', 'Afrika', 'Severní Amerika', 'Jižní Amerika', 'Antarktida', 'Evropa', 'Austrálie'];
// Odstranění prvního prvku pomocí shift
let removedContinent = continents.shift();
console.log("Odstraněný kontinent:", removedContinent);
console.log("Aktualizované pole kontinentů:", continents);

Máme zde dva příkazy console.log, jeden pro vrácení `Odstraněného kontinentu` a druhý pro `Aktualizované pole kontinentů`.

Výstup:

Odstraněný kontinent: Asie
Aktualizované pole kontinentů: [
  'Afrika',
  'Severní Amerika',
  'Jižní Amerika',
  'Antarktida',
  'Evropa',
  'Austrálie'
]

Přidání prvku do pole v JavaScriptu

Zatím jsme se zaměřili na odstraňování prvků. Někdy ale potřebujeme do pole přidat nový prvek. Zde jsou některé způsoby:

#1. Metoda push()

Pro následující příklady použijeme toto pole:

let colors = ['červená', 'modrá', 'zelená', 'žlutá', 'fialová'];

Novou barvu přidáme na konec pole pomocí push():

let colors = ['červená', 'modrá', 'zelená', 'žlutá', 'fialová'];

// Přidání nové barvy do pole
colors.push('oranžová');

Naše pole nyní bude mít šest barev.

#2. Metoda unshift()

Pomocí metody unshift() přidáme nový prvek na začátek pole. Opět použijeme pole barev.

let colors = ['červená', 'modrá', 'zelená', 'žlutá', 'fialová'];
// Přidání nové barvy na začátek pole
colors.unshift('oranžová');
console.log(colors);

Oranžová je nyní první barvou v poli:

Závěr

Nyní již rozumíte, jak odstraňovat prvky z polí v JavaScriptu a jak vytvářet efektivní kód. Volba metody záleží na cílech, dovednostech a preferencích.

Metoda slice() je vhodná, pokud hledáte jednoduché řešení bez mutace původního pole. Kombinace slice() a concat() je perfektní, pokud potřebujete odstranit libovolný prvek.

Doporučujeme také náš článek o cheat sheetech JavaScriptu pro vývojáře.

Petra Kovářová
Autor
Czechia

Sleduje mobilní technologie, Android/iOS a praktické návody pro uživatele.

Předchozí článek
15 nejlepších PIM softwaru pro efektivní správu vašich produktových dat
Další článek
Staňte se affiliate partnerem Semrush a zvedněte své výdělky raketově