在嵌套对象数组中提取“已启用”对象的路径,可以通过递归遍历对象数组的方式来实现。以下是一个示例的实现方法:
findEnabledPath
,该函数接受两个参数:data
和path
。data
是要遍历的对象数组,path
是当前对象的路径。Array.isArray()
方法判断data
是否为数组。如果是数组,则遍历数组中的每个元素。Object.keys()
方法获取对象的所有属性,并遍历这些属性。findEnabledPath
函数,将当前属性的值作为data
参数,将当前属性的路径作为path
参数。path
输出。下面是一个示例代码:
function findEnabledPath(data, path = '') {
if (Array.isArray(data)) {
data.forEach((item, index) => {
const currentPath = `${path}[${index}]`;
findEnabledPath(item, currentPath);
});
} else if (typeof data === 'object') {
Object.keys(data).forEach(key => {
const currentPath = path ? `${path}.${key}` : key;
findEnabledPath(data[key], currentPath);
});
} else if (typeof data === 'string' && data === '已启用') {
console.log(path);
}
}
// 示例数据
const nestedData = [
{
name: '对象1',
status: '已启用',
children: [
{
name: '对象2',
status: '已启用',
children: [
{
name: '对象3',
status: '已启用'
},
{
name: '对象4',
status: '已禁用'
}
]
},
{
name: '对象5',
status: '已禁用'
}
]
},
{
name: '对象6',
status: '已禁用'
}
];
// 调用函数
findEnabledPath(nestedData);
运行以上代码,将会输出所有状态为"已启用"的对象的路径。对于示例数据,输出结果为:
[0]
[0].children[0]
[0].children[0].children[0]
这些路径表示了嵌套对象数组中所有状态为"已启用"的对象所在的位置。根据这些路径,可以进一步操作或处理这些对象。
领取专属 10元无门槛券
手把手带您无忧上云