У меня есть

my_map: { [name: string]: string }

Как проверить, пуста ли хэш-карта my_map?

Я могу вспомнить Object.keys(my_map).length === 0, но это кажется излишним.

3
Qortex 7 Ноя 2018 в 13:18

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
6
Qortex 7 Ноя 2018 в 11:29