【发布时间】:2019-11-01 17:20:32
【问题描述】:
我必须操作一个嵌套对象。这是我的代码:
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 方法,但是,在我看来,这不是一个优雅的解决方案。
【问题讨论】:
-
循环之后的
return object;呢?
标签: javascript recursion javascript-objects