如何用ES6简洁遍历嵌套对象数组检查是否存在空字符串
实现方案
你可以直接组合ES6的Array.some()和Object.values()实现需求,无需额外依赖,也能自动适配time下的属性变更:
// 检查是否存在time下的空字符串字段 const hasEmptyTimeField = array.some(item => Object.values(item.time).some(val => val === '') ) if (hasEmptyTimeField) { // 存在空字段时的逻辑 } else { // 所有time字段都非空时的逻辑 }
说明
Array.some()会短路执行,只要找到第一个符合条件的项就停止遍历,性能远优于你原有写法中多次遍历数组的逻辑Object.values()会自动取出time对象的所有属性值,后续新增/减少time下的属性不需要修改判断逻辑- 如果你需要兼容
null、undefined这类空值,只需要把判断条件val === ''改成!val即可,注意如果time下的属性合法值包含0、false这类布尔假值,请不要使用该写法
如果你仍想使用lodash,可以简化为以下写法:
const hasEmptyTimeField = array.some(item => _.some(item.time, _.isEmpty))
内容的提问来源于stack exchange,提问作者programhur
相关产品推荐
相关产品推荐

