現有演示數組如下:
List<Entity> list = <Entity>[];
Entity entity1 = Entity();
entity1.id = 1;
entity1.name = "1";
list.add(entity1);
Entity entity2 = Entity();
entity2.id = 2;
entity2.name = "2";
list.add(entity2);
...
下面開始幾種常見的數組操作:
1羞迷、flutter獲取數組中某個對象的index
查詢演示數組中,id等于2的元素的index画饥。
/// 返回id=2的第一個元素的index衔瓮,不存在返回-1
int index = list.indexWhere((element) => element.id == 2);
/// 返回id>2的第一個元素的index,不存在返回-1
int index = list.indexWhere((element) => element.id > 2);
indexWhere
查詢出來的是數組中第一個符合條件的index抖甘,如果要獲取符合條件的最后一個元素的index热鞍,則需要使用lastIndexWhere
/// 返回id=2的最后一個元素的index,不存在返回-1
int index = list.lastIndexWhere((element) => element.id == 2);
/// 返回id>2的最后一個元素的index衔彻,不存在返回-1
int index = list.lastIndexWhere((element) => element.id > 2);
2薇宠、flutter獲取數組中符合條件的某個對象
如獲取演示數組中,id=2的對象:
/// 返回id=2的最后一個元素
Entity entity = list.lastWhere((element) => element.id == 2)
/// 返回id=2的第一個元素
Entity entity = list.firstWhere((element) => element.id == 2)
/// 返回id>2的最后一個元素
Entity entity = list.lastWhere((element) => element.id > 2)
/// 返回id>2的第一個元素
Entity entity = list.firstWhere((element) => element.id > 2)
3艰额、flutter數組中是否包含某個元素
如演示數組中澄港,查看是否有id=2的元素(這里就不使用contains
了):
/// 是否有id=2的元素
bool isContains = list.any((element) => element.id == 2);
/// 是否有id>2的元素
bool isContains = list.any((element) => element.id > 2);
4、flutter刪除數組中某個特定的元素
如演示數組中柄沮,刪除id=2的元素:
/// 刪除id=2的元素
list.removeWhere((element) => element.id == 2);
/// 刪除id>2的元素
list.removeWhere((element) => element.id > 2);
5回梧、flutter數組對象中的某一個字段組成新的數組
如演示數組中,將所有的id組成新的數組:
/// 將數組對象中所有的id組成新的數組
var newList = list.map((element)=>element.id);
如果將上面得到的結果祖搓,賦值給另一個數據狱意,可能存在下面的報錯信息:
type 'MappedListIterable<Entity, String>' is not a subtype of type 'List<String>' in type cast
這是類型不對導致的,需要加上toList()
拯欧,如下:
var newList = list.map((element)=>element.id).toList();
6详囤、flutter獲取數組中符合條件的所有元素,組成新的數組
如演示數組中镐作,獲取id > 2的所有元素:
/// 獲取id>2的所有元素
var newList = list.where((element) => element.id > 2).toList();
/// 獲取id=2的所有元素
var newList = list.where((element) => element.id = 2).toList();
同上一個問題類型不對藏姐,需要加上toList()