每日一题:判断对象是否为空
发表于:2024-12-10
字数统计:431 字
预计阅读2分钟
挑战介绍
本节我们来挑战一道大厂面试真题 —— 判断对象是否为空。
挑战准备
新建一个 isEmptyObject.js 文件,在文件里写一个名为 isEmptyObject 的函数,并导出这个函数,如下图所示:
这个文件在环境初始化时会自动生成,如果发现没有自动生成就按照上述图片自己创建文件和函数,函数代码如下:
js
function isEmptyObject(obj) {
// 补充代码
}
module.exports = isEmptyObject;挑战内容
实现一个函数,判断传入的对象是否为空。如果对象为空返回 true,否则返回 false。
不必考虑传入原始类型的情况,本题测试用例中传入的参数都是对象类型。
示例:
js
输入:{}
输出:true
输入:{ name: 'lin' }
输出:false注意事项
- 文件名、函数名不可随意更改。
- 文件中编写的函数需要导出,否则将无法提交通过。
题解
- 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 测试用例未通过
ES6
jsreturn Object.keys(obj).length <= 0for... in ...
jsfunction isEmptyObject(obj) { for (let o in obj) { return false; } return true; }
