Dart 中常用的數組操作方法總結


這里總結了一些在 Dart 中常用的數組操作方法,以便查閱。

首先,我們准備兩組數據,以方便后面使用:

List<Map> students = [ { 'name': 'tom', 'age': 16 }, { 'name': 'jack', 'age': 18 }, { 'name': 'lucy', 'age': 20 } ]; List numbers = [2, 8, 5, 1, 7, 3]; 

本文中用到的 students 及 numbers 均指的是這里已經定義好的,后面不再重復。

forEach()

可以遍歷一個數組或者是一個map

students.forEach((student) => print(student)); // {name: tom, age: 16} // {name: jack, age: 18} // {name: lucy, age: 20} Map tom = { 'name': 'tom', 'age': 16 }; tom.forEach((key, value) => print(key + ' - ' + value.toString())); // name - tom // age - 16 

Map()

可以用來操作已知數組里的每一項,然后返回一個新數組

var messages = students.map((student) => 'Hello ' + student['name']).toList(); print(messages); // [Hello tom, Hello jack, Hello lucy] 

contains()

用於判斷數組是否包含某個元素

print(students.contains(5)); // true 

sort()

用於排序,接收一個函數當做參數

numbers.sort((num1, num2) => num1 - num2); print(numbers); // [1, 2, 3, 5, 7, 8] 

reduce(), fold()

  • reduce() 將數組中的每一個值與前面返回的值相加,最后返回相加的總和
  • fold() 用法跟 reduce() 基本一樣,只不過是可以提供一個初始值
var sum = numbers.reduce((curr, next) => curr + next); print(sum); // 26 var sum2 = numbers.fold(10, (curr, next) => curr + next); print(sum2); // 36 

every()

用於判斷數組中的每一項是否均達到了某個條件

var isAgeOver20 = students.every((student) => student["age"] > 20); print(isAgeOver20); // false var isAgeOver15 = students.every((student) => student["age"] > 15); print(isAgeOver15); // true 

where(), firstWhere(), singleWhere()

  • where() 返回數組中滿足給定條件的元素集合
  • firstWhere() 返回數組中滿足給定條件的第一個元素
  • singleWhere() 返回數組中滿足給定條件的唯一一個元素,若有多個元素滿足條件會拋出異常
var ageOver16 = students.where((student) => student["age"] > 16); print(ageOver16.toList()); // [{name: jack, age: 18}, {name: lucy, age: 20}] var ageFirstOver16 = students.firstWhere((student) => student["age"] > 16, orElse: () => null); print(ageFirstOver16); // {name: jack, age: 18} var ageUnder20 = students.singleWhere((student) => student["age"] < 16, orElse: () => null); print(ageUnder20); // null 

take(), skip()

  • take(n) 從數組里取 n 個元素
  • skip(n) 跳過數組中的 n 個元素
List arr = [1, 3, 5, 2, 7, 9]; print(arr.take(3).toList()); // [1, 3, 5] print(arr.skip(4).toList()); // [7, 9] print(arr.take(3).skip(2).take(1).toList()); // [5] 

List.from()

克隆一個數組

List arr = [1, 3, 5, 2, 7, 9]; var clonedArr = List.from(arr); print(clonedArr); // [1, 3, 5, 2, 7, 9] 

expand()

var arr1 = [[2, 5], [7], [11, 12]]; var flattened = arr1.expand((item) => item).toList(); print(flattened); // [2, 5, 7, 11, 12] var arr2 = [2, 5, 8]; var computed = arr2.expand((item) => [item * 8]).toList(); print(computed); // [16, 40, 64] // 當對每一項進行計算時類似於 map() var computed2 = arr2.map((item) => item * 8).toList(); print(computed2); // [16, 40, 64] 

add(), addAll()

  • add() 向數組中添加一個元素
  • addAll() 向數組中添加另一個數組的所有元素
>var arr1 = [1, 3, 5, 9, 2, 1]; arr1.add(10); print(arr1); // [1, 3, 5, 9, 2, 1, 10] arr1.addAll([15, 21]); print(arr1); // [1, 3, 5, 9, 2, 1, 10, 15, 21] 
 
 
4人點贊
 
 


作者:三也視界
鏈接:https://www.jianshu.com/p/1c7d828b1153
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM