From 7fe20ad1b38ed3077c3666bca86b0c89f820c9f8 Mon Sep 17 00:00:00 2001 From: "b.van.rijswijk" Date: Tue, 7 Apr 2020 17:48:21 +0200 Subject: [PATCH] Adds duplicates function --- src/Collection.php | 12 ++++++++++++ tests/unit/CollectionTest.php | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/src/Collection.php b/src/Collection.php index 986618f..5078951 100644 --- a/src/Collection.php +++ b/src/Collection.php @@ -178,6 +178,18 @@ public function unique() return new static(array_unique($this->items, SORT_REGULAR)); } + /** + * Returns a collection with duplicate values + * @return Collection + */ + public function duplicates() + { + $unique = array_unique($this->items); + $duplicates = array_diff_assoc($this->items, $unique); + + return new static($duplicates); + } + /** * Return a new collection with the items reverese * @return Collection diff --git a/tests/unit/CollectionTest.php b/tests/unit/CollectionTest.php index c40dc86..1411370 100644 --- a/tests/unit/CollectionTest.php +++ b/tests/unit/CollectionTest.php @@ -195,6 +195,13 @@ public function test_unique_removes_duplicate_values() $this->assertEquals([1, 2, 3], $unique->values()->all()); } + public function test_duplicate_values_in_collection() + { + $this->assertEquals(['Bram'], (new Collection(['Bram', 'Bram', 'John', 'Doe']))->duplicates()->values()->all()); + $this->assertEquals([1, 45], (new Collection([1, 1, 2, 5, 11, 28, 45, 45, 60]))->duplicates()->values()->all()); + $this->assertEquals([], (new Collection(['Bram', 'John', 'Doe', 'Jane']))->duplicates()->values()->all()); + } + public function test_reverse_items_in_collection() { $collection = new Collection([1, 2, 3]);