假设我有一个数组,如下所示:
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/