diff --git a/src/js/utilsMisc.js b/src/js/utilsMisc.js
index 98b77590719c035930c9f0c2d3f19f9effe431d4..87c62482f4da74d3f834de6102145b7c21465ccb 100644
--- a/src/js/utilsMisc.js
+++ b/src/js/utilsMisc.js
@@ -81,23 +81,27 @@ globalThis.Categorizer = class {
  * // returns "apple or banana"
  */
 globalThis.toSentence = function(iterable, delimiter = ", ", lastDelimiter = " and ") {
-	/** @type {Array<string>} */
-	let r = [];
-	/** @type {string} */
-	let last = undefined;
-	for (const iter of iterable) {
-		if (last !== undefined) {
-			r.push(last);
+	const itr = iterable[Symbol.iterator]();
+	let output = ``;
+	let result = itr.next();
+	if (!result.done) {
+		// output first element
+		output += result.value;
+		result = itr.next();
+		if (!result.done) {
+			// output elements (1...n-1)
+			let previous = result.value;
+			result = itr.next();
+			while (!result.done) {
+				output += delimiter + previous;
+				previous = result.value;
+				result = itr.next();
+			}
+			// output final element
+			output += lastDelimiter + previous;
 		}
-		last = iter;
-	}
-	if (r.length > 0) {
-		return r.join(delimiter) + lastDelimiter + last;
-	} else if (last !== undefined) {
-		return last;
-	} else {
-		return "";
 	}
+	return output;
 };
 
 App.Utils.alphabetizeIterable = function(iterable) {