สำหรับการจัดการ Array นั้น Dart ก็มี built-in utilities มาให้ใช้เยอะแยะมากมาย แต่ในบทความนี้ จะหยิบมา 10 ฟังก์ชันที่มีการใช้งานบ่อยที่สุด สำหรับการใช้พัฒนา Application ซึ่งมีอะไรบ้าง ไปดูกันเล๊ยยยย
1. forEach()
ฟังก์ชันที่วนลูปแต่ละ element ใน list แต่ไม่มี return
var fruits = [‘banana’, ‘pineapple’, ‘watermelon’];fruits.forEach((fruit) => print(fruit)); // => banana pineapple watermelon
2. map()
ฟังก์ชันนี้จะคล้ายๆกับ forEach() แต่จะต่างที่มี return เป็น new list
var mappedFruits = fruits.map((fruit) => ‘I love $fruit’).toList();print(mappedFruits); // => ['I love banana', ‘I love pineapple’, ‘I love watermelon’]
3. contains()
ฟังก์ชันนี้จะตรวจสอบค่า element ที่ให้มาว่ามีใน list หรือไม่? ถ้ามี return true ถ้าไม่มี return false
var numbers = [1, 3, 2, 5, 4];print(numbers.contains(2)); // => true
4. sort()
ฟังก์ชันจัดเรียงลำดับ element ใน list
var numbers = [1, 3, 2, 5, 4];//เรียงลำดับจากน้อยไปมาก
numbers.sort((num1, num2) => num1 - num2); // => [1, 2, 3, 4, 5]//เรียงลำดับจากมากไปน้อย
numbers.sort((num1, num2) => num2 - num1); // => [5, 4, 3, 2, 1]
5. reduce(), fold()
ฟังก์ชันที่เข้าถึงทุก element ของ list แล้ว return ค่าเพียงค่าเดียว หลังจากได้ result หรือ ผ่านเงื่อนไข (condition)
var numbers = [1, 3, 2, 5, 4];var sum = numbers.reduce((curr, next) => curr + next);
print(sum); // => 15const initialValue = 10;
var sum2 = numbers.fold(initialValue, (curr, next) => curr + next);
print(sum2); // => 25
6. every()
ฟังก์ชันตรวจสอบเงื่อนไข (condition) โดยถ้าทุก element ใน list ตรงตามเงื่อนไข จะ return ture ถ้าไม่ return false
List<Map<String, dynamic>> users = [
{ “name”: ‘John’, “age”: 18 },
{ “name”: ‘Jane’, “age”: 21 },
{ “name”: ‘Mary’, “age”: 23 },
];var is18AndOver = users.every((user) => user[“age”] >= 18);
print(is18AndOver); // => true
var hasNamesWithJ = users.every((user) => user[“name”].startsWith('J'));
print(hasNamesWithJ); // => false
7. where(), firstWhere(), singleWhere()
where()
ฟังก์ชัน return new list สำหรับ element ที่ตรงตามเงื่อนไข
firstWhere()
ฟังก์ชัน return element แรกที่ตรงตามเงื่อนไข
singleWhere()
ฟังก์ชัน return element แรกที่ตรงตามเงื่อนไข และมีค่าไม่ซ้ำกับ element อื่นใน list
// See #6 for users list
var over21s = users.where((user) => user[“age”] > 21);
print(over21s.length); // => 1var nameJ = users.firstWhere((user) =>
user[“name”].startsWith(‘J’), orElse: () => null);
print(nameJ); // => {name: John, age: 18}var under18s = users.singleWhere((user) => user[“age”] < 18, orElse: () => null);
print(under18s); // => null
8. take(), skip()
ฟังก์ชันที่เลือกตำแหน่งของ element ใน list และ retutn เป็น new list
var fiboNumbers = [1, 2, 3, 5, 8, 13, 21];
print(fiboNumbers.take(3).toList()); // => [1, 2, 3]
print(fiboNumbers.skip(5).toList()); // => [13, 21]
print(fiboNumbers.take(3).skip(2).take(1).toList()); // => [3]
9. List.from()
ฟังก์ชันสำหรับสร้าง new list จาก list เดิม
var clonedFiboNumbers = List.from(fiboNumbers);
print(‘Cloned list: $clonedFiboNumbers’);
ตั้งแต่ Dart เวอร์ชั่น 2.0 เป็นต้นไป ไม่จำเป็นต้องใส่คำว่า new นำหน้าอีกต่อไป
10. expand()
ฟังก์ชันสำหรับต่อ-ขยาย list โดย return new list
var pairs = [[1, 2], [3, 4]];
var flattened = pairs.expand((pair) => pair).toList();
print(‘Flattened result: $flattened’); // => [1, 2, 3, 4]var input = [1, 2, 3];
var duplicated = input.expand((i) => [i, i]).toList();
print(duplicated); // => [1, 1, 2, 2, 3, 3]
Reference:
(ข้อมูลอาจมีข้อผิดพลาด ถ้าจะเอาบทความนี้ไปอ้างอิงที่อื่นให้ตรวจสอบให้ดีก่อนนะครับ ขอบคุณครับ)
สำหรับวันนี้ ต้องขอลาไปก่อน สวัสดีครับ NottDev :)