javascript - 如何判断数组中的对象是否不为空?

标签 javascript arrays json

假设我有一个数组,如下所示:

arr = [{}, {}, {}, {}]

我希望能够知道数组的长度,只计算其中至少具有一个属性的对象。

[{}, {name: "Derby County", odds: 2}, {}, {}] // 1

[{}, {name: "Derby County", odds: 2}, {name: "Fullham", odds: 3} ,{}] // 2

如何实现这一目标?

最佳答案

arr.filter(x => Object.keys(x).length).length

正如其他答案中所解释的,Object.keys() 返回给定对象的属性名称。内部 .length 是一种仅过滤至少具有一个属性的项目的快捷方式。外部的 .length 告诉有多少对象符合描述。

更新:

[].filter() 方法采用一个返回 thruthy/falsy 值的函数。大于 0 的数字是真实的,因此它与 .length !== 0 相同。

这里假设数组中包含的任何元素都是非空的。在这种假设下,检查 [].filter() 内的对象是否为 null 是没有意义的。使用 TypeScript 时,它是对 arr 的静态检查。如果假设被打破,就会抛出一个错误,这是我通常希望的。我不隐藏运行时错误。如果这里出现运行时错误,我将检查该假设。但我不确定这里的情况是否如此。

关于javascript - 如何判断数组中的对象是否不为空?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55073388/

相关文章:

javascript - 将 ajax 返回的字符串转换为数组的数组

javascript - 将鼠标悬停在关闭按钮上时,手不会出现

arrays - 动态数组导致无效指针异常

json - package.json 中的相对路径?

python - 如何使用一个带有 lambda 的表达式合并两个计数值?

java - java中如何比较两个txt文件中的元素并将它们合并到一个文件中?

javascript - 尝试使用带有 TTL 的谷歌 FCM 发送数据

javascript - getComputedStyle() 在 FF 上返回空字符串,而 Crome 返回一个计算值

JavaScript 打开链接

javascript - 如何获取我的 Web 应用程序的实时数据?