wip: objectTrimmer

This commit is contained in:
2024-04-01 17:59:57 +08:00
parent 3ded5f8e7a
commit b242e5d52d
2 changed files with 67 additions and 9 deletions

26
utils/object-trimmer.ts Normal file
View File

@@ -0,0 +1,26 @@
const objectTrimmer = <T>(
objectList: T[],
length: number,
{
participatingFields = [],
trimFromStart = true
}: {
participatingFields: (keyof T)[],
trimFromStart?: boolean
}) => {
let participatingLength = 0
let i = objectList.length - 1
while (i >= 0) {
participatingLength = 0
for (const field of participatingFields) {
participatingLength += JSON.stringify(objectList[i][field]).length
if (participatingLength > length) {
break
}
}
i--
}
return trimFromStart ? objectList.slice(i + 1) : objectList.slice(0, i + 1)
}
export {objectTrimmer}