可以通过使用递归和遍历对象的方式来实现。以下是一个示例代码:
function reduceDeepArray(obj) {
if (Array.isArray(obj)) {
return obj.map(reduceDeepArray);
} else if (typeof obj === 'object') {
return Object.keys(obj).reduce((acc, key) => {
const value = obj[key];
if (typeof value === 'object' && !Array.isArray(value)) {
const reducedValue = reduceDeepArray(value);
if (Object.keys(reducedValue).length !== 0) {
acc[key] = reducedValue;
}
} else {
acc[key] = value;
}
return acc;
}, {});
} else {
return obj;
}
}
// 示例用法
const deepArray = [
{
name: 'John',
age: 30,
details: {
address: {
street: '123 Main St',
city: 'New York',
country: 'USA'
},
occupation: 'Developer'
}
},
{
name: 'Jane',
age: 25,
details: {
address: {
street: '456 Oak Ave',
city: 'Los Angeles',
country: 'USA'
},
occupation: 'Designer'
}
}
];
const reducedArray = reduceDeepArray(deepArray);
console.log(reducedArray);
上述代码通过递归地遍历对象数组,将具有深度文字键的对象数组进行简化。输出结果如下:
[
{
name: 'John',
age: 30,
details: {
address: {
street: '123 Main St',
city: 'New York',
country: 'USA'
}
}
},
{
name: 'Jane',
age: 25,
details: {
address: {
street: '456 Oak Ave',
city: 'Los Angeles',
country: 'USA'
}
}
}
]
在这个例子中,我们使用递归函数reduceDeepArray
来遍历对象数组。当遇到数组时,我们使用map
函数递归调用reduceDeepArray
来处理每个数组元素。当遇到对象时,我们使用reduce
函数来遍历对象的键,并根据键的值进行处理。如果值是对象并且不是数组,则递归调用reduceDeepArray
来简化该对象。最后,返回简化后的对象。
这种方法可以有效地减少具有深度文字键的对象数组,并保留只包含非空子对象的层次结构。
领取专属 10元无门槛券
手把手带您无忧上云