Метод reduce
E reduce(Сводит коллекцию к единственному значению, итеративно комбинируя элементы коллекции с помощью предоставленной функции.
Итерируемый объект должен содержать по крайней мере один элемент. Если у него только один элемент, возвращается этот элемент.
В противном случае этот метод начинает с первого элемента из итератора, а затем комбинирует его с оставшимися элементами в порядке итерации, как если бы:
E value = iterable.first;
iterable.skip(1).forEach((element) {
value = combine(value, element);
});
return value;
Пример расчета суммы итерируемого объекта:
iterable.reduce((value, element) => value + element);
Исходный код
E reduce(E combine(var value, E element)) {
int length = this.length;
if (length == 0) throw IterableElementError.noElement();
E value = elementAt(0);
for (int i = 1; i < length; i++) {
value = combine(value, elementAt(i));
if (length != this.length) {
throw new ConcurrentModificationError(this);
}
}
return value;
}
© 2012 the Dart project authors
Licensed under the Creative Commons Attribution-ShareAlike License v4.0.
https://api.dartlang.org/stable/1.24.3/dart-collection/ListQueue/reduce.html