26 lines
670 B
JavaScript
26 lines
670 B
JavaScript
export function roughSizeOfObject(object) {
|
|
var objectList = [];
|
|
var stack = [object];
|
|
var bytes = 0;
|
|
|
|
while (stack.length) {
|
|
var value = stack.pop();
|
|
if (typeof value === "boolean") {
|
|
bytes += 4;
|
|
} else if (typeof value === "string") {
|
|
bytes += value.length * 2;
|
|
} else if (typeof value === "number") {
|
|
bytes += 8;
|
|
} else if (typeof value === "object" && objectList.indexOf(value) === -1) {
|
|
objectList.push(value);
|
|
|
|
for (var i in value) {
|
|
stack.push(value[i]);
|
|
}
|
|
}
|
|
}
|
|
let megaBytes = bytes / 1024 ** 2;
|
|
let megaBytesRounded = Math.round(megaBytes * 10) / 10;
|
|
return megaBytesRounded;
|
|
}
|