如何在嵌套数组中查找空text后返回对应对象顶层id值
问题原因
你现有代码的链式调用逻辑提前拆分了顶层对象,提取state、properties后丢失了和顶层id的关联,因此无法对应返回目标id值。
实现代码
const findItem = () => { return array // 筛选出properties中存在空text的顶层对象 .filter(topItem => topItem.state.properties.some(prop => prop.text === '')) // 提取符合条件的顶层id .map(topItem => topItem.id) }
调用findItem()即可得到你期望的返回结果 ['662e4120', '782h7a9x']。
逻辑说明
- 用
Array.some()方法校验每个顶层对象的properties数组,只要存在任意一个text为空的项就返回true,匹配到符合条件的顶层对象 - 最后通过
map提取符合条件对象的id,得到目标数组
边界情况适配(可选)
如果存在properties未定义、或者单个顶层对象下有多个空text子项需要返回多次id的场景,可以调整写法:
// 单个顶层下多个空text需要返回多次id的写法 const findItem = () => { return array.flatMap(topItem => { const emptyProps = topItem.state?.properties?.filter(prop => prop.text === '') || [] // 有多少个空text就返回多少个对应的id return emptyProps.length > 0 ? new Array(emptyProps.length).fill(topItem.id) : [] }) }
内容的提问来源于stack exchange,提问作者Brew WebDev
相关产品推荐
相关产品推荐

