javascript - 如何区分对象和数组
问题描述
let a = {}
let b = []
typeof a // returns an object
typeof b // returns an object
a === {} // false
b === [] // false
a === b // false
那我怎么知道它是数组还是对象,我正在尝试验证用户输入,它可以是数组或对象,但在任何一种情况下,我都不希望值为空
解决方案
这实际上是几个问题合二为一。首先,对于许多人来说,这是违反直觉typeof []
的'object'
。这仅仅是因为 Array 是一种引用类型(null
、Date
实例和任何其他对象引用也具有typeof
of object
)。
幸运的是,要知道一个对象是否是 的实例Array
,您现在可以使用方便的Array.isArray(...)
函数。或者,您可以将其用于任何类型的对象,您可以执行类似b instanceof Array
.
可以通过检查来知道其中一个是否为空Object.keys(a).length === 0
,但对于数组来说,这样做更自然b.length === 0
。
检查任何两个对象变量(包括数组)===
只会告诉您这两个变量是否引用内存中的同一对象,而不是它们的内容是否相等。
推荐阅读
- verilog - 无法在 Modelsim 中编译美光的 DDR3 内存模型
- android - 三星设备打开错误的键盘
- android - Dagger2 绑定问题
- python-3.x - 需要网络抓取帮助
- c++ - 我可以创建一个名称由用户编写的对象吗?
- c# - .NET Core 3.1 读取程序集的文件版本
- javascript - 使用 forEach 只返回一个数据?
- python - 为 scipy.sparse.csr_matrix 加速左 matmul
- python - 如何通过以下代码在 csv 文件中逐行写入数据?
- java - 从 ActionListener 调用的方法中获取返回值