使用传统的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
那么,检查您的新fancy ES6结构是否被填充的最佳方法是什么?此外,是否有某种可以用于对象、数组、Map和Set的单一重载方法?
.size
。 - HankMoodymap.size
而不是map.length
。 - Derek Pollard