每日一题:判断对象是否为空
每日一题:判断对象是否为空
挑战介绍
本节我们来挑战一道大厂面试真题 —— 判断对象是否为空。
挑战准备
新建一个 isEmptyObject.js 文件,在文件里写一个名为 isEmptyObject 的函数,并导出这个函数,如下图所示:
这个文件在环境初始化时会自动生成,如果发现没有自动生成就按照上述图片自己创建文件和函数,函数代码如下:
1 | function isEmptyObject(obj) { |
挑战内容
实现一个函数,判断传入的对象是否为空。如果对象为空返回 true,否则返回 false。
不必考虑传入原始类型的情况,本题测试用例中传入的参数都是对象类型。
示例:
1 | 输入:{} |
注意事项
- 文件名、函数名不可随意更改。
- 文件中编写的函数需要导出,否则将无法提交通过。
题解
- JSON:(不可靠:无限循环的时候会寄,搞了我好久)
1 | return JSON.stringify(obj) === '{}' |
1
2
3
4
5
6
7
8
9
10
11
12
13
14 输入:
{ 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
1
return Object.keys(obj).length <= 0
for… in …
1
2
3
4
5
6function isEmptyObject(obj) {
for (let o in obj) {
return false;
}
return true;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 江月迟迟!
