const obj = {
a: '1232',
b: 1234,
c: false,
d: {
test: '123',
user: 'info',
},
e: ['123', 'test'],
};
const objectSize = (object) => {
const keys = Object.keys(object);
let bytes = 0;
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
bytes += computerBytes(key);
bytes += computerBytes(object[key]);
}
return bytes;
};
function computerBytes(object) {
const objectType = typeof object;
switch (objectType) {
case 'string':
return object.length * 2;
case 'boolean':
return 4;
case 'number':
return 8;
case 'object':
if (object === 'null') return 0;
if (Array.isArray(object)) {
// 计算数组的字节
return object.map(computerBytes).reduce((prev, next) => prev + next, 0);
} else {
// 计算对象的字节
return objectSize(object);
}
default:
return 0;
}
}