Чтобы рекурсивно заменить ключ в объекте JavaScript, вы можете использовать следующие методы:
Метод 1: рекурсивная функция
Вы можете создать рекурсивную функцию, которая обходит объект и заменяет нужный ключ.
function replaceKeyRecursive(obj, oldKey, newKey) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}
if (obj.hasOwnProperty(oldKey)) {
obj[newKey] = obj[oldKey];
delete obj[oldKey];
}
for (var key in obj) {
obj[key] = replaceKeyRecursive(obj[key], oldKey, newKey);
}
return obj;
}
// Usage
var obj = {
key1: 'value1',
key2: {
key3: 'value2',
key4: {
key5: 'value3'
}
}
};
replaceKeyRecursive(obj, 'key3', 'newKey');
console.log(obj);
Метод 2: JSON.stringify() и JSON.parse()
Другой подход — преобразовать объект в строку JSON с помощью JSON.stringify()
, заменить нужный ключ в строку, а затем проанализировать ее обратно в объект, используя JSON.parse()
.
function replaceKeyRecursive(obj, oldKey, newKey) {
var newObj = JSON.parse(JSON.stringify(obj));
if (newObj.hasOwnProperty(oldKey)) {
newObj[newKey] = newObj[oldKey];
delete newObj[oldKey];
}
for (var key in newObj) {
newObj[key] = replaceKeyRecursive(newObj[key], oldKey, newKey);
}
return newObj;
}
// Usage
var obj = {
key1: 'value1',
key2: {
key3: 'value2',
key4: {
key5: 'value3'
}
}
};
var newObj = replaceKeyRecursive(obj, 'key3', 'newKey');
console.log(newObj);