Javascript 确定对象中的嵌套数组是否具有值
我有一个像这样的对象:Javascript 确定对象中的嵌套数组是否具有值,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个像这样的对象: steps: { '36793745-4c52-42d2-91a5-dcdc9de2e8fa': [], 'b23d8770-806f-44a9-aa2e-a21dd68f7977': [], '33571d58-b833-4a7d-a1a1-ec96366cb74a': [], 'b1499917-7f82-49e5-9708-6237340a9610': [] } 该对象中的每个数组都可以
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)
的方法,但这将返回一个true或false的数组[false,false,false,false]
然后,我尝试了Object.keys(steps).filter(step=>steps[step].length>0)
,但这将返回一个确实有值的项键数组
我知道在这一点上,我可以简单地检查结果的长度,但我想知道是否有更好的方法来实现这一点
这个对象的大小可能会显著增加,因此我希望在得到
true
后,可以使用这些值并检查数组的长度,以尽早退出
var hasItems = Object.values(steps).some(array => array.length);
您可以使用这些值并检查数组的长度
var hasItems = Object.values(steps).some(array => array.length);
使用一些
它可以用来检查数组中是否至少有一个元素通过了条件。与Array.Filter类似,它接受一个测试函数,在该函数中它通过源数组的元素进行循环
如果任何一个元素通过测试条件,则返回true。如果测试函数中的所有元素都失败,则返回false。一旦其中一个元件通过测试功能,它就会使回路短路
const stepHasProp = Object.values(steps).some(array => array.length)
使用一些
它可以用来检查数组中是否至少有一个元素通过了条件。与Array.Filter类似,它接受一个测试函数,在该函数中它通过源数组的元素进行循环
如果任何一个元素通过测试条件,则返回true。如果测试函数中的所有元素都失败,则返回false。一旦其中一个元件通过测试功能,它就会使回路短路
const stepHasProp = Object.values(steps).some(array => array.length)
谢谢,我没有意识到
有些
-你把它分解得很好:)谢谢,我没有意识到有些
-你把它分解得很好:)