1. const obj = {
    2. a: '1232',
    3. b: 1234,
    4. c: false,
    5. d: {
    6. test: '123',
    7. user: 'info',
    8. },
    9. e: ['123', 'test'],
    10. };
    11. const objectSize = (object) => {
    12. const keys = Object.keys(object);
    13. let bytes = 0;
    14. for (let i = 0; i < keys.length; i++) {
    15. const key = keys[i];
    16. bytes += computerBytes(key);
    17. bytes += computerBytes(object[key]);
    18. }
    19. return bytes;
    20. };
    21. function computerBytes(object) {
    22. const objectType = typeof object;
    23. switch (objectType) {
    24. case 'string':
    25. return object.length * 2;
    26. case 'boolean':
    27. return 4;
    28. case 'number':
    29. return 8;
    30. case 'object':
    31. if (object === 'null') return 0;
    32. if (Array.isArray(object)) {
    33. // 计算数组的字节
    34. return object.map(computerBytes).reduce((prev, next) => prev + next, 0);
    35. } else {
    36. // 计算对象的字节
    37. return objectSize(object);
    38. }
    39. default:
    40. return 0;
    41. }
    42. }