使用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结构是否被填充的最佳方法是什么?另外,是否有某种单一的重载方法适用于对象,数组,地图,和集?
答案 0 :(得分:2)
您使用其size
属性。地图和集合都有它(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,但它们不是子类。
答案 1 :(得分:0)
两种情况下都可以使用
const populatedSet = new Set(['foo']);
console.log(populatedSet.size); // should be 1
答案 2 :(得分:0)
您可以直接执行
if(storeMapDetails.size == 0)//做点什么 您可以直接检查