跳转至

2727. 判断对象是否为空

题目描述

给定一个对象或数组,判断它是否为空。

  • 一个空对象不包含任何键值对。
  • 一个空数组不包含任何元素。

你可以假设对象或数组是通过 JSON.parse 解析得到的。

 

示例 1:

输入:obj = {"x": 5, "y": 42}
输出:false
解释:这个对象有两个键值对,所以它不为空。

示例 2:

输入:obj = {}
输出:true
解释:这个对象没有任何键值对,所以它为空。

示例 3:

输入:obj = [null, false, 0]
输出:false
解释:这个数组有 3 个元素,所以它不为空。

 

提示:

  • obj 是一个有效的 JSON 对象或数组
  • 2 <= JSON.stringify(obj).length <= 105

 

你可以在 O(1) 时间复杂度内解决这个问题吗?

解法

方法一:遍历

我们可以遍历对象或数组,如果遍历到了第一个元素,就返回 false,否则返回 true

时间复杂度 $O(1)$,空间复杂度 $O(1)$。

1
2
3
4
5
6
function isEmpty(obj: Record<string, any> | any[]): boolean {
    for (const x in obj) {
        return false;
    }
    return true;
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
/**
 * @param {Object | Array} obj
 * @return {boolean}
 */
var isEmpty = function (obj) {
    for (const x in obj) {
        return false;
    }
    return true;
};

方法二

1
2
3
function isEmpty(obj: Record<string, any> | any[]): boolean {
    return Object.keys(obj).length === 0;
}

评论