对于 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 方便的新数据结构 Map 和 Set 的工作方式并不相同。如果您尝试对它们使用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 和集合都有它( here 和 here )。
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/