From cb34615912b39e27249733239a818305637c0898 Mon Sep 17 00:00:00 2001 From: Masataka Pocke Kuwabara Date: Mon, 25 Oct 2021 12:35:27 +0900 Subject: [PATCH] Use FFD algorithm for ArrayUtil.joinWithMax It improves bin size --- src/Renderer/Library/Util/ArrayUtil.ts | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/src/Renderer/Library/Util/ArrayUtil.ts b/src/Renderer/Library/Util/ArrayUtil.ts index 3329f041..ff27f546 100644 --- a/src/Renderer/Library/Util/ArrayUtil.ts +++ b/src/Renderer/Library/Util/ArrayUtil.ts @@ -4,20 +4,18 @@ class _ArrayUtil { } joinWithMax(values: string[], maxLength: number): string[] { - const results: string[] = []; + const sortedValues = [...values].sort((a, b) => b.length - a.length); + const results: string[] = ['']; - for (let i = 0; i < values.length; i++) { - let result: string = ''; - for (; i < values.length; i++) { - if (result.length + values[i].length + 1 < maxLength) { - result = `${result} ${values[i]}`.trim(); - } else { - i--; - break; + sortedValues.forEach((value) => { + for (let i = 0; i < results.length; ++i) { + if (results[i].length + value.length + 1 < maxLength) { + results[i] = `${results[i]} ${value}`.trim(); + return; } } - results.push(result); - } + results.push(value); + }); return results; }