如何在Typescript中检查哈希表是否为空

3

我有

my_map: { [name: string]: string }

如何检查哈希映射 my_map 是否为空?

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

1个回答

7
有趣的是,您过度解决方案实际上是不够的;您需要再进一步:
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

好的,谢谢。有点伤心!所以如果要测试的对象确实是一个哈希映射,underkillTest就可以了,对吧? - Qortex
1
@mic 是的 - 但是如果你用一个函数来隐藏它,加上保险措施可能会防止未来出现一些奇怪的行为。 - Fenton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接