From a1bbf7cd1af811f332711f42d34965fabe3dee87 Mon Sep 17 00:00:00 2001 From: Infendro Date: Wed, 29 Apr 2026 18:24:32 +0200 Subject: [PATCH 1/2] Small Refactor --- src/collection/maxBy.ts | 8 ++++---- src/collection/maxByOrNull.ts | 8 ++++---- src/collection/minBy.ts | 8 ++++---- src/collection/minByOrNull.ts | 8 ++++---- src/collection/reversed.ts | 2 +- src/collection/sorted.ts | 2 +- src/collection/sortedBy.ts | 2 +- src/collection/sortedWith.ts | 2 +- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/collection/maxBy.ts b/src/collection/maxBy.ts index a985ad8..78fb247 100644 --- a/src/collection/maxBy.ts +++ b/src/collection/maxBy.ts @@ -2,15 +2,15 @@ import {error} from "../util/error"; export function maxBy(value: T[], transform: (it: T) => number): T { if (value.length === 0) error(); - let max = value[0]; - let maxVal = transform(max); + let maxIt = value[0]; + let maxVal = transform(maxIt); for (let index = 1; index < value.length; index++) { const it = value[index]; const val = transform(it); if (val > maxVal) { - max = it; + maxIt = it; maxVal = val; } } - return max; + return maxIt; } diff --git a/src/collection/maxByOrNull.ts b/src/collection/maxByOrNull.ts index da163ca..79b0fd6 100644 --- a/src/collection/maxByOrNull.ts +++ b/src/collection/maxByOrNull.ts @@ -1,14 +1,14 @@ export function maxByOrNull(value: T[], transform: (it: T) => number): T | null { if (value.length === 0) return null; - let max = value[0]; - let maxVal = transform(max); + let maxIt = value[0]; + let maxVal = transform(maxIt); for (let index = 1; index < value.length; index++) { const it = value[index]; const val = transform(it); if (val > maxVal) { - max = it; + maxIt = it; maxVal = val; } } - return max; + return maxIt; } diff --git a/src/collection/minBy.ts b/src/collection/minBy.ts index 9b2c9ef..e1bc728 100644 --- a/src/collection/minBy.ts +++ b/src/collection/minBy.ts @@ -2,15 +2,15 @@ import {error} from "../util/error"; export function minBy(value: T[], transform: (it: T) => number): T { if (value.length === 0) error(); - let min = value[0]; - let minVal = transform(min); + let minIt = value[0]; + let minVal = transform(minIt); for (let index = 1; index < value.length; index++) { const it = value[index]; const val = transform(it); if (val < minVal) { - min = it; + minIt = it; minVal = val; } } - return min; + return minIt; } diff --git a/src/collection/minByOrNull.ts b/src/collection/minByOrNull.ts index e35dbfb..322569d 100644 --- a/src/collection/minByOrNull.ts +++ b/src/collection/minByOrNull.ts @@ -1,14 +1,14 @@ export function minByOrNull(value: T[], transform: (it: T) => number): T | null { if (value.length === 0) return null; - let min = value[0]; - let minVal = transform(min); + let minIt = value[0]; + let minVal = transform(minIt); for (let index = 1; index < value.length; index++) { const it = value[index]; const val = transform(it); if (val < minVal) { - min = it; + minIt = it; minVal = val; } } - return min; + return minIt; } diff --git a/src/collection/reversed.ts b/src/collection/reversed.ts index dbc42fc..1625dde 100644 --- a/src/collection/reversed.ts +++ b/src/collection/reversed.ts @@ -1,3 +1,3 @@ export function reversed(value: T[]): T[] { - return [...value].reverse(); + return value.toReversed(); } diff --git a/src/collection/sorted.ts b/src/collection/sorted.ts index aadd57f..b40548b 100644 --- a/src/collection/sorted.ts +++ b/src/collection/sorted.ts @@ -1,3 +1,3 @@ export function sorted(value: number[]): number[] { - return [...value].sort((a, b) => a - b); + return value.toSorted((a, b) => a - b); } diff --git a/src/collection/sortedBy.ts b/src/collection/sortedBy.ts index 92c32a9..3c714e3 100644 --- a/src/collection/sortedBy.ts +++ b/src/collection/sortedBy.ts @@ -1,3 +1,3 @@ export function sortedBy(value: T[], transform: (it: T) => number): T[] { - return [...value].sort((a, b) => transform(a) - transform(b)); + return value.toSorted((a, b) => transform(a) - transform(b)); } diff --git a/src/collection/sortedWith.ts b/src/collection/sortedWith.ts index 0b1ed18..6142a21 100644 --- a/src/collection/sortedWith.ts +++ b/src/collection/sortedWith.ts @@ -1,3 +1,3 @@ export function sortedWith(value: T[], compare: (a: T, b: T) => number): T[] { - return [...value].sort(compare); + return value.toSorted(compare); } -- 2.49.1 From d4875a8ff07ae13082b94737d9bcde7901d1bc83 Mon Sep 17 00:00:00 2001 From: Infendro Date: Thu, 7 May 2026 21:33:30 +0200 Subject: [PATCH 2/2] Implement toObject --- package.json | 2 +- src/collection.ts | 5 +++++ src/collection/toObject.ts | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 src/collection/toObject.ts diff --git a/package.json b/package.json index 42bc6ca..4574d96 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@infendro/collection", - "version": "0.0.1", + "version": "0.0.2", "scripts": { "build": "tsc" }, diff --git a/src/collection.ts b/src/collection.ts index f0749cf..4156fe3 100644 --- a/src/collection.ts +++ b/src/collection.ts @@ -78,10 +78,12 @@ import {unzip} from "./collection/unzip"; import {windowed} from "./collection/windowed"; import {withIndex} from "./collection/withIndex"; import {zip} from "./collection/zip"; +import {Key, Object, toObject} from "./collection/toObject"; export type Collection = { [Symbol.iterator](): Iterator + toObject(this: Collection<[K, V]>): Object toArray(): T[] toSet(): Set toMap(this: Collection<[K, V]>): Map @@ -190,6 +192,9 @@ function wrap(value: T[]): Collection { [Symbol.iterator]() { return value[Symbol.iterator](); }, + toObject() { + return toObject(value as [K, V][]); + }, toArray() { return toArray(value); }, diff --git a/src/collection/toObject.ts b/src/collection/toObject.ts new file mode 100644 index 0000000..c2b9304 --- /dev/null +++ b/src/collection/toObject.ts @@ -0,0 +1,6 @@ +export type Key = keyof any +export type Object = { [key in K]: V } + +export function toObject(value: [K, V][]): Object { + return Object.fromEntries(value) as Object; +} -- 2.49.1