Flutter 常見數組操作

現有演示數組如下:

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()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 實際工作中,程序猿對數組的操作并不陌生,講到數組的操作方法能說出來幾個,實際上我們對這些方法真的了解透了嗎?會改變...
    monkeyying閱讀 320評論 0 0
  • 創建一個數組: // 字面量方式: // 這個方法也是我們最常用的,在初始化數組的時候 相當方便 vara = [...
    CjLilard閱讀 3,576評論 0 1
  • 轉載:在開發中,數組的使用場景非常多,平日中也涉及到很多數組的api/相關操作,一直也沒有對這塊內容進行一塊整理總...
    七色煙火閱讀 3,254評論 0 3
  • 在開發中,數組的使用場景非常多,平日中也涉及到很多數組的api/相關操作,一直也沒有對這塊內容進行一塊整理總結,很...
    小李不小閱讀 222評論 0 0
  • - concat()//鏈接數組 - slice()//從當前數組中截取一個數組,不影響原來的數組,參數start...
    HelloKing閱讀 601評論 0 0