27 lines
621 B
TypeScript
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}
|