diff --git a/lib/iterable_extension.dart b/lib/iterable_extension.dart index f0cc900f..f2b21303 100644 --- a/lib/iterable_extension.dart +++ b/lib/iterable_extension.dart @@ -1,3 +1,5 @@ +import 'package:tuple/tuple.dart'; + extension IterableExtension<T> on Iterable<T> { /// Return a new sorted list List<T> sorted([int compare(T a, T b)]) => this.toList()..sort(compare); @@ -13,6 +15,8 @@ extension IterableExtension<T> on Iterable<T> { } } + Iterable<Tuple2<int, T>> withIndex() => mapWithIndex((i, e) => Tuple2(i, e)); + /// Whether the collection contains an element equal to [element] using the /// equality function [equalFn] bool containsIf(T element, bool Function(T a, T b) equalFn) => diff --git a/test/iterable_extension_test.dart b/test/iterable_extension_test.dart index 8e10ca20..6916581f 100644 --- a/test/iterable_extension_test.dart +++ b/test/iterable_extension_test.dart @@ -20,6 +20,16 @@ void main() { expect(result[4], Tuple2(4, 3)); }); + test("withIndex", () { + final src = [1, 4, 5, 2, 3]; + final result = src.withIndex().toList(); + expect(result[0], Tuple2(0, 1)); + expect(result[1], Tuple2(1, 4)); + expect(result[2], Tuple2(2, 5)); + expect(result[3], Tuple2(3, 2)); + expect(result[4], Tuple2(4, 3)); + }); + test("containsIf", () { final src = [ _ContainsIfTest(1),