Skip to content

每日一题:判断对象是否为空

作者:江月迟迟
发表于:2024-12-10
字数统计:431 字
预计阅读2分钟

挑战介绍

本节我们来挑战一道大厂面试真题 —— 判断对象是否为空。

挑战准备

新建一个 isEmptyObject.js 文件,在文件里写一个名为 isEmptyObject 的函数,并导出这个函数,如下图所示:

图片描述

这个文件在环境初始化时会自动生成,如果发现没有自动生成就按照上述图片自己创建文件和函数,函数代码如下:

js
function isEmptyObject(obj) {
  // 补充代码
}

module.exports = isEmptyObject;

挑战内容

实现一个函数,判断传入的对象是否为空。如果对象为空返回 true,否则返回 false。

不必考虑传入原始类型的情况,本题测试用例中传入的参数都是对象类型。

示例:

js
输入:{}
输出:true
输入:{ name: 'lin' }
输出:false

注意事项

  • 文件名、函数名不可随意更改。
  • 文件中编写的函数需要导出,否则将无法提交通过。

题解

  1. JSON:(不可靠:无限循环的时候会寄,搞了我好久)
js
return JSON.stringify(obj) === '{}'
输入:
{ a: { a: { a: { a: { ... } } } } }  无限循环下去

程序报错,错误信息如下:
TypeError: Converting circular structure to JSON
    --> starting at object with constructor 'Object'
    --- property 'a' closes the circle
    at JSON.stringify (<anonymous>)
    at isEmptyObject (/home/project/isEmptyObject.js:2:15)
    at Object.<anonymous> [90m(/tmp/[39misEmptyObject.test.js:32:17[90m)[39m

预期结果 false 

测试用例未通过
  1. ES6

    js
    return Object.keys(obj).length <= 0
  2. for... in ...

    js
    function isEmptyObject(obj) {
      for (let o in obj) {
        return false;
      }
      return true;
    }