Минимальное/максимальное значение

Как получить минимальные и максимальные значения списка в дроте.

[1, 2, 3, 4, 5].min //returns 1
[1, 2, 3, 4, 5].max //returns 5

Я уверен, что смогу a) написать короткую функцию или b) скопировать, затем отсортировать список и выбрать последнее значение,

но я смотрю, есть ли более собственное решение, если оно есть.

Ответ 1

Предполагая, что список не пуст, вы можете использовать Iterable.reduce:

import 'dart:math';

main(){
  print([1,2,8,6].reduce(max)); // 8
  print([1,2,8,6].reduce(min)); // 1
}

Ответ 2

Неэффективный способ:

var n = [9, -2, 5, 6, 3, 4, 0];
n.sort();
print('Max: ${n.last}');  // Max: 9
print('Min: ${n[0]}');  // Min: -2

Без импорта библиотеки dart: math:

var n = [9, -2, 5, 6, 3, 4, 0];

int minN = n[0];
int maxN = n[0];
n.skip(1).forEach((b) {
  minN = minN.compareTo(b) >= 0 ? b : minN;
  maxN = maxN.compareTo(b) >= 0 ? maxN : b;

});
print('Max: $maxN');  // Max: 9
print('Min: $minN');  // Min: -2

Ответ 3

Если вы не хотите импортировать dart: math и по-прежнему хотите использовать reduce:

main() {
  List list = [2,8,1,6]; // List should not be empty.
  print(list.reduce((curr, next) => curr > next? curr: next)); // 8 --> Max
  print(list.reduce((curr, next) => curr < next? curr: next)); // 1 --> Min
}