如何遍历JavaScript对象属性,验证嵌套子对象是否存在指定id属性
实现方案
你之前的方法失效核心是误操作了对象的键名字符串,而非键对应的实际子对象,按照以下逻辑实现即可:
1. 检查单个子对象是否存在id键
先判空再调用hasOwnProperty,避免空值报错:
// 拿示例中的flight1对象举例 const flight1 = formik.values.flight1 // 先判断目标是不是对象类型且非空,再检查是否存在id键 const hasId = typeof flight1 === 'object' && flight1 !== null && flight1.hasOwnProperty('id') console.log(hasId) // 输出true
2. 批量遍历所有航班子对象检查id、统计数量
如果要遍历formik.values下的所有航班子对象:
// 先拿到values下所有子对象的集合,不要拿键名 const flightList = Object.values(formik.values) // 统计包含id的子对象数量 const hasIdCount = flightList.filter(item => { return typeof item === 'object' && item !== null && item.hasOwnProperty('id') }).length console.log('包含id的子对象数量:', hasIdCount) // 遍历输出每个子对象的检查结果 flightList.forEach((item, index) => { const hasId = item.hasOwnProperty('id') console.log(`第${index+1}个航班是否有id:`, hasId) })
3. 统计父对象下的子对象总数量
直接用Object.keys()拿父对象的所有键名再算长度,不要直接对父对象取.length:
// 统计formik.values下的子对象总个数 const flightTotal = Object.keys(formik.values).length console.log('航班总数量:', flightTotal) // 输出4
内容的提问来源于stack exchange,提问作者Colorful Codes
相关产品推荐
相关产品推荐

