【问题标题】:How to check if a hash map is empty in Typescript如何检查 Typescript 中的哈希映射是否为空
【发布时间】:2019-04-10 18:20:13
【问题描述】:

我有

my_map: { [name: string]: string }

如何检查 hashmap my_map 是否为空?

我可以想到Object.keys(my_map).length === 0,但感觉有点矫枉过正。

【问题讨论】:

    标签: typescript dictionary hash hashmap


    【解决方案1】:

    有趣的是,您的矫枉过正的解决方案实际上是矫枉过正;你需要更进一步:

    Object.keys(obj).length === 0 && obj.constructor === Object
    

    例子:

    function isEmptyUnderkill(obj: any) {
        return Object.keys(obj).length === 0;
    }
    
    function isEmptyObject(obj: any) {
        return Object.keys(obj).length === 0 && obj.constructor === Object;
    }
    
    
    const a = {};
    const b = { name: 'User' };
    
    console.log(isEmptyUnderkill(a), isEmptyObject(a));
    console.log(isEmptyUnderkill(b), isEmptyObject(b));
    console.log(isEmptyUnderkill(new Date()), isEmptyObject(new Date()));
    

    给予:

    true true
    false false
    true false
    

    【讨论】:

    • 好的,谢谢。有点悲伤!因此,如果要测试的对象肯定是一个 hashmap,underkillTest 没问题,对吧?
    • @mic 是的 - 但如果你用函数隐藏它,腰带和大括号可能会防止未来出现一些奇怪的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多