”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > [Leetcode] 对象是否为空

[Leetcode] 对象是否为空

发布于2024-11-04
浏览:202

[Leetcode] Is Object Empty

问题链接:https://leetcode.com/problems/is-object-empty/description/

[问题陈述]

给定一个对象或数组,如果为空则返回。

  • 空对象不包含键值对。
  • 空数组不包含任何元素。

您可以假设对象或数组是 JSON.parse 的输出。

[理解问题]

  1. Sooo...我们得到一个数组或一个对象作为这个名为 obj 的函数的参数。 (是的,我知道,超级有创意的名字,但稍后它就会有意义!)

  2. 我们的任务?执行一些神奇的编码技巧,首先确定该 obj 是数组还是对象。然后,根据这些知识,我们将决定下一步做什么。

  3. 最后,我们需要检查这个对象/数组是否为空。很简单,对吧? (或者是……)

[要点]

  1. 首先要做的事情:“从技术上讲,数组是 JavaScript 中的一个对象。”是的!没错,数组是 JS 中一种特殊类型的对象。所以,不要混淆!

  2. 对象检测101:我们可以通过使用 typeof obj === 'object' && obj !== null 来检查参数是否实际上是一个对象(或数组)。为什么 !== null 部分?嗯,因为 null 是 JS 中的一个特例。尽管从技术上讲它是对象类型,但它就像虚无的空虚。因此,我们排除了这一点,以防万一(即使问题没有明确提及,这是一个好习惯)。

  3. 未定义和空元素:对象和数组都可以具有未定义或空的属性/元素。但不用担心——当我们检查长度时它们仍然会计算在内。他们没有从我们的验证中获得免费通行证!

  4. 它是数组吗?:我们可以使用 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,因为问题指定我们仅使用对象或数组。

版本声明 本文转载于:https://dev.to/luvsense/leetcode-2727-is-object-empty-5h8k?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-16
  • 为什么 C/C++ 中 `size_t` 是无符号的:历史的必然还是现代的 bug 磁石?
    为什么 C/C++ 中 `size_t` 是无符号的:历史的必然还是现代的 bug 磁石?
    为什么 size_t 无符号?Bjarne Stroustrup 的观察结果是“使用无符号而不是 int 来多获得一位来表示正整数几乎从来都不是一个好主意”引起了人们对将 size_t 设为无符号的决定的担忧。历史起源最初,size_t 是无符号的,以适应具有 16 位指针的体系结构,例如 DOS ...
    编程 发布于2024-11-16
  • 如何使用 Selenium Python 从 Shadow Root 中提取信息?
    如何使用 Selenium Python 从 Shadow Root 中提取信息?
    如何使用 Selenium 从影子根中提取信息 PythonSelenium 为 Web 自动化提供了一个强大的框架,包括提取信息的能力来自动态加载的 Web 元素(例如影子根)的信息。本指南将演示如何克服从影子根中的特定在线商店提取产品标签和其他字段的挑战。挑战:从影子根中提取信息 当遇到影子根时...
    编程 发布于2024-11-16
  • 如何使用特定字段中的值数组从 MySQL 表中选择数据?
    如何使用特定字段中的值数组从 MySQL 表中选择数据?
    从 MySQL 表中选择特定字段中包含值的数组在使用 MySQL 数据库时,您可能会遇到需要的场景根据存储在数组中的值检索数据。例如,假设您有一个名为 $array 的数组,其中包含用户 ID 列表:$array = array(1, 40, 20, 55, 29, 48);To选择 myField...
    编程 发布于2024-11-16
  • 在 HTML 中添加 Javascript 文件的最佳方法
    在 HTML 中添加 Javascript 文件的最佳方法
    在 HTML 中,有多种方法可以包含 JavaScript 文件。我将解释四种不同的方法及其缺点,最后强调最佳方法。 1.中的 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8...
    编程 发布于2024-11-16
  • 为什么我的 Bootstrap 4 列是垂直对齐而不是水平对齐?
    为什么我的 Bootstrap 4 列是垂直对齐而不是水平对齐?
    Bootstrap 4 列对齐不一致在从 Bootstrap 3 到 4 的过渡中,您注意到您的列是垂直对齐的,而不是水平地。这可以归因于 Bootstrap 4 中网格系统的更改。Col-12 Issue在 Bootstrap 3 中,您可以使用以下方法将列包装在父行中“col-12”类。这在 B...
    编程 发布于2024-11-16
  • 如何在 Python 中确定生成器是否为空
    如何在 Python 中确定生成器是否为空
    确定生成器的空性在Python中,生成器是用于惰性评估和迭代大型数据集的强大工具。然而,由于发电机的动态特性,确定发电机是否为空是一个独特的挑战。与列表或元组不同,生成器没有大小属性​​,简单地迭代它们会导致 StopIteration 异常。Peek 与 HasNext有些人可能会建议使用 pee...
    编程 发布于2024-11-16
  • 如何基于公共列合并多个 DataFrame 并保留共享行?
    如何基于公共列合并多个 DataFrame 并保留共享行?
    基于公共列合并多个数据帧您有多个具有公共列“日期”的数据帧,并且需要合并它们同时保留所有数据帧共有日期的行。递归函数方法可能很复杂并且容易出错。这是使用 pandas 强大的分组和合并功能的更简单的解决方案:import pandas as pd # Create a list of datafra...
    编程 发布于2024-11-16
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-16
  • 为什么 PHP 中的特殊字符会显示为带问号的黑钻石?
    为什么 PHP 中的特殊字符会显示为带问号的黑钻石?
    PHP字符编码问题:带有问号的小黑钻石用户在使用PHP从数据库中检索数据时经常遇到一个特殊问题:特殊字符(例如引号)显示为带有问号 (�) 的黑色菱形。此问题是由于数据的编码与用于显示它的编码之间的差异引起的。要解决此问题,您可以实现多种方法:HTTP 标头: 添加 HTTP 标头,为浏览器指定正确...
    编程 发布于2024-11-16
  • Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta 中的列偏移发生了什么?
    Bootstrap 4 Beta:列偏移的删除和恢复Bootstrap 4 在其 Beta 1 版本中引入了重大更改柱子偏移了。然而,随着 Beta 2 的后续发布,这些变化已经逆转。从 offset-md-* 到 ml-auto在 Bootstrap 4 Beta 1 中, offset-md-*...
    编程 发布于2024-11-16
  • CURL 可以替代 file_get_contents 来获取外部链接吗?
    CURL 可以替代 file_get_contents 来获取外部链接吗?
    使用 CURL 获取外部链接(替代 file_get_contents)为了获取特定页面上的外部链接,通常使用 file_get_contents 函数。但是,当您使用的服务器不支持此功能时,CURL 可以作为一个可行的替代方案。要实现 CURL,您可以使用以下代码:function file_ge...
    编程 发布于2024-11-16
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-16
  • Go的FileMode函数如何处理八进制和十进制权限转换?
    Go的FileMode函数如何处理八进制和十进制权限转换?
    Go 中 FileMode 函数的权限解析os.FileMode 函数在设置标志之前转换各种格式的权限。这些格式包括整数、八进制表示形式以及可能的其他形式。从整数转换为 os.FileMode 时,该函数不会显式辨别整数是用八进制还是十进制表示。十进制表示形式被解释为常规整数。数字的八进制表示形式通...
    编程 发布于2024-11-16
  • ## 如何在 Android 上从 FTP 服务器下载文件:哪个 Java 库最好?
    ## 如何在 Android 上从 FTP 服务器下载文件:哪个 Java 库最好?
    适用于 Android 的 FTP 库正在寻找一个可靠的 Java 库,以方便从 Android 设备上的 FTP 服务器下载和恢复文件?让我们深入研究一些潜在的解决方案。Apache Commons FTP考虑一下 Apache Commons FTP,它是一个广泛使用且备受推崇的 FTP 操作库...
    编程 发布于2024-11-16

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3