Files
xsh-assistant-next/utils/object-trimmer.ts
2024-04-01 17:59:57 +08:00

27 lines
621 B
TypeScript

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}