如何不使用变量检查对象中所有浏览器类型数组的长度是否全为0?
解决方法:直接判断所有浏览器数组是否为空
嘿,刚好能帮你搞定这个问题!你想去掉中间变量,直接通过检查capabilities里所有数组的长度来判断是否没请求任何浏览器对吧?其实用Object.values()搭配Array.every()就能一行搞定,完全不用额外变量。
修改后的代码示例
直接把判断逻辑写在条件里就行,连临时变量都省了:
async retrievePartners(capabilities) { // 直接判断所有浏览器数组是否全为空 if (Object.values(capabilities).every(arr => arr.length === 0)) { throw new Error("请至少请求一种浏览器类型"); } // 你的原有逻辑继续... const appropriatePartners = { chrome: [], /* 其他浏览器数组 */ }; // ...后续处理代码 }
逻辑解释
Object.values(capabilities):把capabilities对象里的所有值(也就是各个浏览器对应的数组)提取成一个新数组,比如如果capabilities是{chrome: [], firefox: []},这个方法就会返回[[], []]。Array.every(arr => arr.length === 0):遍历提取出来的数组,检查每一个子数组的长度是不是0。只有当所有子数组长度都为0时,这个表达式才会返回true,这时候就触发错误抛出逻辑。
这样就完全替代了你之前用allTypeNumber的逻辑,而且代码更简洁直接~
内容的提问来源于stack exchange,提问作者Rasim Avcı
相关产品推荐
相关产品推荐

