以下是一个示例代码,用于遍历嵌套对象数组以收集缺少某个属性的对象:
function collectObjectsWithMissingProperty(objArr, property) {
let result = [];
function traverse(obj) {
// 检查对象是否缺少指定属性
if (!obj.hasOwnProperty(property)) {
result.push(obj);
}
// 检查对象是否包含嵌套对象数组
for (let key in obj) {
if (typeof obj[key] === 'object' && Array.isArray(obj[key])) {
// 递归遍历嵌套对象数组
obj[key].forEach((nestedObj) => {
traverse(nestedObj);
});
}
}
}
// 遍历初始对象数组
objArr.forEach((obj) => {
traverse(obj);
});
return result;
}
// 示例用法
const objArray = [
{ name: 'John', age: 30, children: [] },
{ name: 'Jane', children: [{ name: 'Alice' }, { name: 'Bob', age: 5 }] },
{ name: 'Mike', age: 40, children: [{ name: 'Charlie', age: 10 }] },
];
const missingProperty = 'age';
const result = collectObjectsWithMissingProperty(objArray, missingProperty);
console.log(result);
在上述示例代码中,collectObjectsWithMissingProperty
函数接收一个嵌套对象数组 objArr
和一个属性名称 property
。它首先定义一个空数组 result
用于存储缺少指定属性的对象。然后,它定义了一个内部的 traverse
函数,用于递归遍历嵌套的对象数组。在 traverse
函数中,它首先检查当前对象是否缺少指定属性,如果是,则将该对象添加到 result
数组中。然后,它通过检查对象的每个属性,判断是否包含嵌套的对象数组,并对每个嵌套对象数组递归调用 traverse
函数。最后,它使用 forEach
方法遍历初始对象数组,并对每个对象调用 traverse
函数。返回最终的结果数组 result
。
上一篇:遍历嵌套对象数组并限制值