flutter 什么是最有效的方式来搜索字典列表DART

2w3rbyxf  于 2023-08-07  发布在  Flutter
关注(0)|答案(2)|浏览(127)

什么是最有效的方式来搜索在dart的字典列表
我想找一个参数为2的人

List objects = [
    {"a": 1, "b": "John", "c": "Doe"},
    {"a": 2, "b": "Jane", "c": "Doe"},
    {"a": 3, "b": "Mary", "c": "Smith"},
   ];

  String name = "none";

  for (var object in objects) {
    if (object["a"] == 2) {
      name = object["b"];
      break;
    }
  }

  print(name); // Jane

字符串
有没有更有效的方法?

7cwmlq89

7cwmlq891#

您可以使用dart列表中的where函数。
比如说

List objects = [
    {"a": 1, "b": "John", "c": "Doe"},
    {"a": 2, "b": "Jane", "c": "Doe"},
    {"a": 3, "b": "Mary", "c": "Smith"},
   ];

var filtered = objects.where((item) => item["a"] == 2).toList();

print(filtered); //[{a: 2, b: Jane, c: Doe}]

字符串
filtered将包含一个列表,其中包含所有满足item["a"] == 2的项。
简洁明了,不需要使用for循环。

wecizke3

wecizke32#

您可以使用

List<Map<String, dynamic>> objects = [
  {"a": 1, "b": "John", "c": "Doe"},
  {"a": 2, "b": "Jane", "c": "Doe"},
  {"a": 3, "b": "Mary", "c": "Smith"},
];

int searchParam = 2;
String name = objects
    .firstWhere((object) => object["a"] == searchParam, orElse: () => null)
    ?.["b"] ?? "none";

print(name); // Jane

字符串

相关问题