wip: objectTrimmer
This commit is contained in:
26
utils/object-trimmer.ts
Normal file
26
utils/object-trimmer.ts
Normal 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}
|
||||
Reference in New Issue
Block a user