Javascript 如何查找数组中的对象是否为空?
假设我有一个数组,如下所示:Javascript 如何查找数组中的对象是否为空?,javascript,arrays,json,Javascript,Arrays,Json,假设我有一个数组,如下所示: arr = [{}, {}, {}, {}] 我希望能够知道数组的长度,只计算其中至少有一个属性的对象 [{}, {name: "Derby County", odds: 2}, {}, {}] // 1 [{}, {name: "Derby County", odds: 2}, {name: "Fullham", odds: 3} ,{}] // 2 如何实现这一点?如果您: arr.map(x=> Object.keys(x).length) 您将
arr = [{}, {}, {}, {}]
我希望能够知道数组的长度,只计算其中至少有一个属性的对象
[{}, {name: "Derby County", odds: 2}, {}, {}] // 1
[{}, {name: "Derby County", odds: 2}, {name: "Fullham", odds: 3} ,{}] // 2
如何实现这一点?如果您:
arr.map(x=> Object.keys(x).length)
您将获得:
[ 0, 0, 0, 1 ]
如果对象为空,则没有关键帧,因此其长度为0
如果需要正确/错误的结果,请执行以下操作:
arr.map(x=> Object.keys(x).length).some(x=>x>0)
示例:
console.log(“[{},{}]”,[{},{}).map(x=>Object.keys(x.length).some(x=>x>0))
console.log(“[{},{a:1}]”,[{},{a:1}].map(x=>Object.keys(x.length).some(x=>x>0))
如果您:
arr.map(x=> Object.keys(x).length)
您将获得:
[ 0, 0, 0, 1 ]
如果对象为空,则没有关键帧,因此其长度为0
如果需要正确/错误的结果,请执行以下操作:
arr.map(x=> Object.keys(x).length).some(x=>x>0)
示例:
console.log(“[{},{}]”,[{},{}).map(x=>Object.keys(x.length).some(x=>x>0))
console.log(“[{},{a:1}]”,[{},{a:1}].map(x=>Object.keys(x.length).some(x=>x>0))
arr.filter(x=>Object.keys(x.length).length
如其他答案所述,Object.keys()
返回给定对象的属性名。内部.length
是一种仅筛选至少具有一个属性的项的快捷方式。外部.length
告诉您有多少对象适合描述
更新:
[].filter()
方法接受一个返回thruthy/falsy值的函数。大于0的数字是thruthy,因此它与.length!==0
这里的假设是数组中包含的任何元素都是非空的。在此假设下,在[].filter()
中检查对象是否为null是没有意义的。使用TypeScript时,它是对arr
的静态检查。如果假设被打破,那么就会抛出一个错误,这是我通常想要的。我不会隐藏运行时错误。如果这里有运行时错误,我将检查该假设。但是我不确定这里的情况是否如此。arr.filter(x=>Object.keys(x.length).length
如其他答案所述,Object.keys()
返回给定对象的属性名。内部.length
是一种仅筛选至少具有一个属性的项的快捷方式。外部.length
告诉您有多少对象适合描述
更新:
[].filter()
方法接受一个返回thruthy/falsy值的函数。大于0的数字是thruthy,因此它与.length!==0
这里的假设是数组中包含的任何元素都是非空的。在此假设下,在
[].filter()
中检查对象是否为null是没有意义的。使用TypeScript时,它是对arr
的静态检查。如果假设被打破,那么就会抛出一个错误,这是我通常想要的。我不会隐藏运行时错误。如果这里有运行时错误,我将检查该假设。但是我不确定这里是否是这样。Object.keys(obj).length
将在至少有一个可继承的、非继承的属性时产生一个非零结果。检测添加的内容
这有多种解释方法,使用完全不同的解决方案你是对的@AndréWerlang我现在更新OP,谢谢,我已经更新了OP,希望它更清晰?Object.keys(obj)。length
将在至少有一个iterable、非继承属性时产生非零结果。检测添加的内容
这有多种解释方法,解决方案完全不同您是对的@AndréWerlang我现在更新OP,谢谢我已经更新了OP,希望它更清晰?记得检查nullarr.filter(x=>x?Object.keys(x).length>0:false).length代码>谢谢回复,很抱歉,我又更新了OP!希望现在我已经清楚地表达了自己properly@A7DC编辑没有改变答案,它仍然符合,我猜.length
访问使您认为它会累积属性?@ThilinaHasantha期望输入数组只包含非空对象是一个有效的假设。此外,如果假设未能检查nullarr.filter(x=>x?Object.keys(x).length>0:false).length,它也会抛出一个错误代码>谢谢回复,很抱歉,我又更新了OP!希望现在我已经清楚地表达了自己properly@A7DC编辑没有改变答案,它仍然符合,我猜.length
访问使您认为它会累积属性?@ThilinaHasantha期望输入数组只包含非空对象是一个有效的假设。此外,如果假设失败,它也会抛出一个错误