javascript - 如何检查 Map 或 Set 是否为空?

标签 javascript ecmascript-6

对于 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 方便的新数据结构 MapSet 的工作方式并不相同。如果您尝试对它们使用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 结构是否已填充的最佳方法是什么?另外,是否有某种单一重载方法适用于对象、数组、 map 、集合?

最佳答案

您使用其size 属性。 map 和集合都有它( herehere )。

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,但它们不是子类。)

关于javascript - 如何检查 Map 或 Set 是否为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55520583/

相关文章:

javascript - 如何在 PIE 图表中显示图例从图表到饼钻取 Highcharts

Javascript:在 javascript 中插入换行符的正确方法

javascript - array.map() 不返回单个数组

javascript - 关闭Pycharm中的 "Parameter should be initialized"ES6 JavaScript错误

javascript - 无法在普通 JS 中导出类

javascript - 我可以使用 ES6/2015 模块导入在 'global' 范围内设置引用吗?

javascript - 为什么 React 钩子(Hook)在 React 文档中使用 const?

javascript - 用于刷新信息的 XML 到 HTML 函数

javascript - Knockout 附加 observables w/characters

javascript - 有没有办法用 eslint 来检查特定的变量名