minByOrNull method
E?
minByOrNull(
- dynamic selector(
- E element
根据 selector 得到的值进行比对,获得最小值。(返回值可为null)
selector 得到的值为 null,则会忽略该项。
举例:
List<String> list = ["1b", "4a", "3c"];
list.minByOrNull((it) => it != "3c" ? it : null) // 1b
Implementation
E? minByOrNull(dynamic Function(E element) selector) {
final it = iterator;
E? min;
while (it.moveNext()) {
// 根据 selector 获取当前值
final tCur = selector(it.current);
// 根据 selector 获取历史最小值
final tMin = min == null ? null : selector(min);
// 当前值为 null ,则跳过当前循环
if (tCur == null) continue;
// 历史最小值为 null,且当前值不为 null,则赋值
if (min == null && tCur != null) {
min = it.current;
} else if(tMin != null) {
// 历史值和当前值均不为空,才进行比对。
final c = tMin.compareTo(tCur);
min = c < 0 ? min : it.current;
}
}
return min;
}