Operacje na kolekcjach - nowe metody w ES6

Wraz z ECMAScript 6 obiekt Array zyskał nowe metody:

  • Array.find() - pozwala wyszukać pojedynczy element tablicy,

  • Array.every() - sprawdza czy każdy element tablicy spełnia zadany warunek,

  • Array.some() - sprawdza czy jakikolwiek element tablicy spełnia zadany warunek.

Array.find()

Aby wyszukać konkretny element z tablicy w ES5 trzeba użyć metodę Array.filter() a następnie pobrać pierwszy element ze zwróconej tablicy.

Przykład 2.4.1
const id = 3;
const foundStudent = 
    students.filter(student => student.id === id)[0];

foundStudent.log(); 
// -> (3) Marisol Sargent

Dzięki ES6 możemy wykonać to w bardziej elegancji sposób.

Przykład 2.4.2
const id = 3;
const foundStudent = students.find(student => student.id === id);

foundStudent.log(); 
// -> (3) Marisol Sargent

Podobnie jak Array.filter(), Array.find() przyjmuje funkcję, którą następnie wywołuje z trzema parametrami: elementem tablicy, jego indeksem oraz całą tablicą.

Array.every()

Sprawdzenia czy wszystkie elementy tablicy spełniają zadany warunek można dokonać wykorzystując metodę Array.reduce().

Przykład 2.4.3
let areAllStudentsActive = 
    students.reduce((acc, student) => acc && student.isActive, true);

console.log(areAllStudentsActive); // -> false

Ponownie z pomocą przychodzi ES6 oraz metoda Array.every().

Przykład 2.4.4
let areAllStudentsActive = 
    students.every(student => student.isActive);

console.log(areAllStudentsActive); // -> false

Ponownie, podobnie jak Array.reduce(), Array.every() przyjmuje funkcję, którą następnie wywołuje z trzema parametrami: elementem tablicy, jego indeksem oraz całą tablicą.

Array.some()

Aby sprawdzić czy jakikolwiek element tablicy spełnia zadany warunek ponownie wykorzystamy metodę Array.reduce().

Przykład 2.4.5
let isAnyoneWithBlueEyes = students
    .filter(student => student.eyeColor === 'blue')
    .length > 0;

console.log(isAnyoneWithBlueEyes); // -> false

ES6 dostarcza nam metodę Array.some().

Przykład 2.4.6
let isAnyoneWithBlueEyes = 
    students.some(student => student.eyeColor === 'blue');

console.log(isAnyoneWithBlueEyes); // -> false

Ponownie, podobnie jak Array.reduce(), Array.every() przyjmuje funkcję, którą następnie wywołuje z trzema parametrami: elementem tablicy, jego indeksem oraz całą tablicą.


Źródła

results matching ""

    No results matching ""