我有一个看起来像这样的对象:
steps: {
'36793745-4c52-42d2-91a5-dcdc9de2e8fa': [],
'b23d8770-806f-44a9-aa2e-a21dd68f7977': [],
'33571d58-b833-4a7d-a1a1-ec96366cb74a': [],
'b1499917-7f82-49e5-9708-6237340a9610': []
}
该对象中的每个数组都可以是字符串数组。
我想检查这些数组中是否有任何一个,如果有,我想返回true
。
我不在乎以后再检查,只要返回true
,我就会感到高兴。
我尝试了类似Object.keys(steps).map(step => steps[step].length > 0)
的操作,但这会返回一个真或假[false, false, false, false]
的数组
然后我尝试了Object.keys(steps).filter(step => steps[step].length > 0)
,但这会返回确实具有值的项目键的数组。
我知道这时我可以简单地检查结果的长度,但是我想知道是否有更好的方法来实现这一目标。
该对象的大小可能会大大增加,因此我希望在得到true
的情况下尽快退出市场
答案 0 :(得分:2)
您可以使用这些值并检查数组的长度。
var hasItems = Object.values(steps).some(array => array.length);
答案 1 :(得分:0)
使用some
。
它可以用来检查数组中的至少一个元素是否符合条件。像Array.Filter一样,它接受一个测试函数,在其中循环遍历源数组的元素。
如果任何一个元素通过测试条件,则返回true。如果所有元素在测试功能上均失败,则返回false。一旦其中一个元素通过测试功能,就会使环路短路。
const stepHasProp = Object.values(steps).some(array => array.length)