要更新数组中的深层对象,可以使用递归函数来遍历数组和对象,并根据条件更新目标对象。以下是一个示例解决方案:
// 定义递归函数来遍历数组和对象
function updateArray(obj: any, key: string, value: any) {
// 如果是数组,则遍历数组中的每个元素并递归调用自身
if (Array.isArray(obj)) {
obj.forEach((item) => {
updateArray(item, key, value);
});
} else if (typeof obj === 'object') {
// 如果是对象,则遍历对象的每个属性并递归调用自身
for (let prop in obj) {
if (prop === key) {
// 如果找到了目标属性,则更新其值
obj[prop] = value;
} else {
// 否则继续递归调用自身
updateArray(obj[prop], key, value);
}
}
}
}
// 示例数据
let data = [
{
id: 1,
name: 'John',
address: {
street: '123 Main St',
city: 'New York'
}
},
{
id: 2,
name: 'Jane',
address: {
street: '456 Elm St',
city: 'Los Angeles'
}
}
];
// 更新数组中深层对象的示例调用
updateArray(data, 'city', 'San Francisco');
console.log(data);
在上面的示例中,我们定义了一个名为updateArray
的递归函数,该函数接受三个参数:目标对象,要更新的属性键和新的属性值。它首先检查传入的对象是否是数组类型,如果是,则遍历数组中的每个元素并递归调用自身。如果传入的对象是普通对象(非数组),则遍历对象的每个属性并递归调用自身。在遍历过程中,如果找到了目标属性,则更新其值,否则继续递归调用自身。最后,我们调用updateArray
函数来更新示例数据中所有city
属性的值为San Francisco
。