【问题标题】:dart flutter max value from list of objects对象列表中的飞镖颤动最大值
【发布时间】:2020-02-11 14:56:38
【问题描述】:

寻找一些帮助如何从颤振对象列表中的用户中选择最老的年龄...

users = [
  { id: 123, name: 'Bob', age: 25},
  { id: 345, name: 'Joe', age: 44},
  ...
];

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    我会使用列表reduce 函数,文档here。

    var oldestUser = users.reduce((currentUser, nextUser) => currentUser['age'] > nextUser['age'] ? currentUser : nextUser)
    

    【讨论】:

      【解决方案2】:

      首先确保您的列表具有正确的类型和格式:

      List<Map<String, dynamic>> users = [
        {"id": 123, "name": "Bob", "age": 25},
        {"id": 345, "name": "Joe", "age": 44},
        {"id": 35, "name": "Joxe", "age": 40},
      ];
      

      那么你可以这样做:

      if (users != null && users.isNotEmpty) {
        users.sort((a, b) => a['age'].compareTo(b['age']));
        print(users.last['age']);
      }
      

      另一种方法是:

      if (users != null && users.isNotEmpty) {
        dynamic max = users.first;
        users.forEach((e) {
          if (e['age'] > max['age']) max = e;
        });
        print(max['age']);
      }
      

      另一个:

      if (users != null && users.isNotEmpty) {
        print(users.fold<int>(0, (max, e) => e['age'] > max ? e['age'] : max));
      }
      

      而这个需要import 'dart:math':

      if (users != null && users.isNotEmpty) {
        print(users.map<int>((e) => e['age']).reduce(max));
      }
      

      【讨论】:

        【解决方案3】:
        void main() {
          var users = [
            {"id": 123, "name": 'Bob', "age": 25},
            {"id": 345, "name": 'Joe', "age": 44},
            {"id": 35, "name": 'Joxe', "age": 40},
          ];
          users.sort(ageCompare);
          print(users.first);
        }
        
        int ageCompare(u1, u2) => u2['age'] - u1['age'];
        

        试试https://dartpad.dartlang.org


        或者只是单行

          users.sort((Map u1, Map u2) => u2['age'] - u1['age']);
          print(users.first);
        

        【讨论】:

          猜你喜欢
          • 2013-12-27
          • 2021-12-18
          • 1970-01-01
          • 2021-07-12
          • 2021-01-24
          • 2021-11-23
          • 1970-01-01
          • 2020-07-18
          • 1970-01-01
          相关资源
          最近更新 更多