С традиционным объектом в JavaScript достаточно просто проверить, является ли он пустым, используя метод Object.keys
:
const emptyObj = {};
console.log(Object.keys(emptyObj).length === 0); // true, i.e. "empty"
const populatedObj = { foo: 'bar' };
console.log(Object.keys(populatedObj).length === 0); // false, not empty
Хотя это немного избыточно, вы можете использовать тот же подход и с массивами, если хотите:
const emptyArr = [];
console.log(Object.keys(emptyArr).length === 0); // true
const populatedArr = [1, 2, 3];
console.log(Object.keys(populatedArr).length === 0); // false
Однако, новые удобные структуры данных ES6 Карта и Установите , работают не так. Если вы попытаетесь использовать Object.keys
для них, вы всегда получите пустой массив!
const populatedSet = new Set(['foo']);
console.log(Object.keys(populatedSet).length); // 0
const populatedMap = new Map([['foo', 1]]);
console.log(Object.keys(populatedMap).length); // 0
Так, каков наилучший способ проверить, заполнены ли ваши модные новые структуры ES6? Кроме того, существует ли какой-то один перегруженный метод, который будет работать для объектов, массивов, карт, и множеств?