如何在 dart 中从列表中找到最小值和最大值?

dtcbnfnu  于 2022-12-30  发布在  其他
关注(0)|答案(3)|浏览(204)

我试过下面的代码片段,但是它抛出了一个关于类型转换的错误,因为列表中有整数和双精度值的组合。但是list.reduce(min)只返回一个整数值。你能提供一个解决方案吗?

**注意--**但是,我只有来自用户的dynamicList

final List<dynamic> y = [12, 12, 23.5, 2, 19, 1, 23, 16, 29.7, 32, 45, 68, 23, 21];
List<num> yValues = y;
num yMin = yValues.reduce(min);
num yMax = yValues.reduce(max);
ztigrdn8

ztigrdn81#

你写的列表是List<dynamic>类型的,因为minmax只在num类型上工作,我们需要将列表的每个元素castnum,如下所示:

import 'dart:math';

void main() {
  final List<dynamic> y = <dynamic>[12, 12, 23.5, 2, 19, 1, 23, 16, 29.7, 32, 45, 68, 23, 21];
  final yMin = y.cast<num>().reduce(min);
  final yMax = y.cast<num>().reduce(max);
  print(yMin); // 1
  print(yMax); // 68
}
u4vypkhs

u4vypkhs2#

我通常不推荐使用第三方软件包,但那些通用的和来自可信开发者的软件包是不错的。其中之一是quiver

...
import 'package:quiver/iterables.dart' as quiver;
...

final y = [12, 12, 23.5, 2, 19, 1, 23, 16, 29.7, 32, 45, 68, 23, 21];
num yMin = quiver.min(y);
num yMax = quiver.max(y);
eanckbw9

eanckbw93#

这应该行得通:

import 'dart:math';

void main() {
  final y = [12, 12, 23.5, 2, 19, 1, 23, 16, 29.7, 32, 45, 68, 23, 21, 69.1];
  var yMin = y.reduce(min);
  var yMax = y.reduce(max);
}

相关问题