gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 12:56:02 24 4
gpt4 key购买 nike

对于 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com