Как проверить, пуста ли Карта или Набор? - PullRequest
0 голосов
/ 04 апреля 2019

С традиционным объектом в 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? Кроме того, существует ли какой-то один перегруженный метод, который будет работать для объектов, массивов, карт, и множеств?

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Вы используете его size свойство.У карт и наборов есть ( здесь и здесь ).

const populatedSet = new Set(['foo']);
console.log(populatedSet.size);  // 1

const populatedMap = new Map([['foo', 1]]);
console.log(populatedMap.size);  // 1

(Примечание: WeakMaps и WeakSets не имеют size или некоторых других функций, которые имеют их «сильные» аналоги, чтобы сохранить свои реализации и код с использованиемони, вменяемые. :-) Там, где они имеют схожую функциональность, они предлагают тот же API, но они не подклассы.)

0 голосов
/ 04 апреля 2019

Для обоих случаев вы можете использовать

const populatedSet = new Set(['foo']);
console.log(populatedSet.size); // should be 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...