Я должен манипулировать вложенным объектом. Вот мой код:
function modify(object) {
Object.keys(object).forEach(key => {
if (typeof object[key] === 'object') {
if (object[key].class && object[key].type && object[key].period) {
object[key].applicableName = `${object[key].class}|${object[key].type}|${object[key].period}`;
delete object[key].class;
delete object[key].type;
delete object[key].period;
} else {
modify(object[key]);
}
}
});
}
Вот объект:
[
{
"item": [
{
"period": "period-CYTM",
"type": "type-CMLT",
"class": "class-RFEE",
},
{
"period": "period-FYTD",
"type": "type-CMLT",
"class": "class-RFEE",
},
{
"period": "period-ITD",
"type": "type-ANNL",
"class": "class-RFEE",
},
{
"period": "period-ITD",
"type": "type-CMLT",
"class": "class-RFEE",
},
{
"period": "period-1MTH",
"type": "type-CMLT",
"class": "class-RFEE",
},
{
"period": "period-1YR",
"type": "type-CMLT",
"class": "class-RFEE",
},
{
"period": "period-10YR",
"type": "type-ANNL",
"class": "class-RFEE",
},
{
"period": "period-10YR",
"type": "type-CMLT",
"class": "class-RFEE",
}
]
}
]
Работает нормально, но проблема в том, что он мутирует в исходном объекте. Как я могу заставить мой modify
метод возвращать новый измененный объект, а исходный объект остается неизменным ?
Я пытался клонировать исходный объект, а затем передавал клонированный объект методу modify
, но, на мой взгляд, это не было элегантным решением.