Корисні методи List у Dart

5 хв. читання

List (список) — один із чотирьох видів колекцій, які пропонує Dart. Список, як і масив, утворюється з впорядкованого набору елементів, де індекс починається з 0.

Корисні методи List у Dart

Оглянемо декілька методів списку, які хоч і не дуже популярні, проте можуть бути надзвичайно корисні для особливих завдань. Для закріплення матеріалу наведемо приклади.

sublist()

Метод повертає новий список з елементів між індексами start (включно) та end (виключно).

 var myList = [1,2,3,4,5];
 print(myList.sublist(1,3)); // [2,3]

Якщо параметр end не задано, то буде повернено всі елементи, починаючи з індексу start — до кінця списку.

print(myList.sublist(1)); // [2,3,4,5]

shuffle()

Метод переставляє елементи у випадковому порядку.

 myList.shuffle();
 print('$myList'); // [5,4,3,1,2]

reversed

reversed — це гетер, який повертає елементи списку у зворотному порядку.

 var descList = [6,5,4,3,2,1];
 print(descList.reversed.toList()); // [1,2,3,4,5,6]
 
 var ascList = [1,2,3,4,5,6];
 print(ascList.reversed.toList()); // [6,5,4,3,2,1]

asMap()

Метод повертає об'єкт Map на основі списку. Ключами будуть індекси списку, а значеннями — відповідні елементи.

 List<String> sports = ['cricket', 'football', 'tennis', 'baseball'];
 Map<int, String> map = sports.asMap();
 print(map); // {0: cricket, 1: football, 2: tennis, 3: baseball}

whereType()

Метод повертає ітерований об'єкт, елементи якого мають певний тип даних.

Припустимо, у нас є список з елементів різних типів (скажімо, String та int), а нам потрібно отримати лише дані типу int. Тут на допомогу приходить метод whereType:

 var mixList = [1, "a", 2, "b", 3, "c", 4, "d"];
 var num = mixList.whereType<int>();
 print(num); // (1, 2, 3, 4)

Так само ми можемо отримати дані лише типу String, визначивши:

mixList.whereType<String>()

getRange()

Метод повертає елементи з визначеного проміжку в тому ж порядку, як і у списку. Зверніть увагу, що елемент з індексом start буде в списку, а з індексом end — ні.

replaceRange()

Метод допомагає оновити чи замінити деякі елементи списку на нові. Потрібно лише передати проміжок між індексами start і end та вказати нові значення.

var rList= [0,1,2,3,4,5,6];
 rList.replaceRange(2,3, [10]);
 print('$rList'); // [0, 1, 10, 3, 4, 5, 6]

firstWhere()

Метод повертає перший елемент списку, який відповідає умові.

var firstList = [1,2,3,4,5,6];
 print(firstList.firstWhere((i) => i < 4)); // 1
 
 var sList = ['one', 'two', 'three', 'four'];
 print(sList.firstWhere((i) => i.length > 3)); // three

Аналогічно lastWhere() повертає останній елемент списку, який задовольняє задану умову. where() повертає новий список, що відповідає умові.

singleWhere()

Метод повертає перший елемент, який точно задовольняє умову.

 var mList = [1, 2, 3, 4];
 print(mList.singleWhere((i) => i == 3)); // 3

Якщо список містить дублікати, метод singleWhere викликає виключення. В такому випадку ми можемо використати firstWhere(), який поверне перший елемент, що задовольняє умову, попри дублікати у списку.

 var sList = [1, 2, 3, 3, 4];
 print(sList.singleWhere((i) => i == 3)); 
// Bad state: Too many elements
 
 print(sList.firstWhere((i) => i == 3)); // 3

fold()

Метод повертає єдине значення, отримане внаслідок ітерації елементами списку та виконанням над ними та заданим початковим елементом певних дій. Тобто якщо вам треба сума чи добуток всіх елементів масиву, вам допоможе fold():

 var lst = [1,2,3,4,5];
 var res = lst.fold(5, (i, j) => i + j);
 print('res is ${res}'); // результат 20

У прикладі вище початковим значенням є 5. Метод fold() починає ітерацію з елемента за індексом 0 та додає до нього початкове значення, тобто 5: (5 + 1). Такі дії повторюються для кожного елемента списку: результат попередньої ітерації додається до наступного елемента (6+2, 8+3, 11+4, 15+5). Наприкінці ми отримуємо одне значення, суму всіх елементів та початкового значення, тобто 20.

reduce()

Метод дуже подібний до fold(), тому що повертає єдине значення після ітерації всіма елементами заданого списку. Єдина відмінність: цей метод не приймає початкового значення, а список не може бути порожнім.

var lst = [1,2,3,4,5];
 var res = lst.reduce((i, j) => i + j);
 print('res is ${res}'); // результат 15

followedBy()

Метод приєднує ітеровані об'єкти до заданого списку.

var sportsList = ['cricket', 'tennis', 'football'];
print(sportsList.followedBy(['golf', 'chess']).toList()); 
// [cricket, tennis, football, golf, chess]

any()

Метод повертає булеве значення: true, якщо хоча б один елемент задовольняє умову, в іншому випадку метод повертає false.

print(sportsList.any((e) => e.contains('cricket'))); // true

every()

Метод повертає булеве значення: true, якщо всі елементи відповідають вказаній умові.

take()

Метод повертає задану кількість елементів списку, починаючи з індексу 0:

print(sportsList.take(2)); // (cricket, tennis)

skip()

Метод ігнорує задану кількість елементів списку, починаючи з індексу 0, та повертає елементи, які залишились.

print(sportsList.skip(2)); // (football)

Наведемо ще декілька корисних методів та властивостей списку в Dart:

  • add: додає новий елемент до списку;
  • length: повертає кількість елементів списку;
  • isEmpty: повертає true, якщо в списку немає елементів;
  • isNotEmpty: повертає true, якщо в списку є елементи;
  • first: повертає перший елемент списку;
  • last: повертає останній елемент списку;
  • clear: метод очищає список.
Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.6K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація