问题链接:https://leetcode.com/problems/is-object-empty/description/
给定一个对象或数组,如果为空则返回。
您可以假设对象或数组是 JSON.parse 的输出。
Sooo...我们得到一个数组或一个对象作为这个名为 obj 的函数的参数。 (是的,我知道,超级有创意的名字,但稍后它就会有意义!)
我们的任务?执行一些神奇的编码技巧,首先确定该 obj 是数组还是对象。然后,根据这些知识,我们将决定下一步做什么。
最后,我们需要检查这个对象/数组是否为空。很简单,对吧? (或者是……)
首先要做的事情:“从技术上讲,数组是 JavaScript 中的一个对象。”是的!没错,数组是 JS 中一种特殊类型的对象。所以,不要混淆!
对象检测101:我们可以通过使用 typeof obj === 'object' && obj !== null 来检查参数是否实际上是一个对象(或数组)。为什么 !== null 部分?嗯,因为 null 是 JS 中的一个特例。尽管从技术上讲它是对象类型,但它就像虚无的空虚。因此,我们排除了这一点,以防万一(即使问题没有明确提及,这是一个好习惯)。
未定义和空元素:对象和数组都可以具有未定义或空的属性/元素。但不用担心——当我们检查长度时它们仍然会计算在内。他们没有从我们的验证中获得免费通行证!
它是数组吗?:我们可以使用 Array.isArray(obj) 检查参数是否是数组。不过,无需再次检查它是否是一个对象——我们之前已经这样做了。
var isEmpty = function (obj) { if (typeof obj === "object" && obj !== null) { // Check if it's an object and not null if (Array.isArray(obj)) { // If it's an array return obj.length === 0; // Return true if it's empty } else { // If it's an object return Object.keys(obj).length === 0; // Return true if there are no keys } } return false; // If it's neither an object nor an array, return false };
第1步:检查它是否是一个对象
首先,我们使用 typeof obj === 'object' && obj !== null 来确保输入是一个对象而不是 null。 (因为我们都知道 typeof null === 'object 是 JavaScript 的怪癖之一。谢谢 JavaScript!)
第2步:它是数组吗?
我们使用 Array.isArray(obj) 来区分数组和常规对象。数组有一个 length 属性,所以我们可以直接检查 obj.length === 0.
第三步:它是一个对象吗?
如果它不是数组,我们使用 Object.keys(obj).length === 0 检查它是否是一个对象。此方法返回对象中键的数量。没有钥匙?空了!
第4步:默认情况
如果输入不是对象(或者为空),我们返回 false,因为问题指定我们仅使用对象或数组。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3