我需要从另一个创建一个新对象。例如。这是一个旧对象:
const objectOld = {
level1: {
level2: {
level3: {
code: 123,
error: 'Message'
}
}
}
}
这是我根据旧对象创建的新对象。
const objectNew = {
level1: {
level2: {
level3: {
error: {
code: 123,
key: 'Message'
}
}
}
}
}
深度当然可以不同。
有人能帮我吗?
您可以通过撤消,Array#reduce,Object#entries和一些破坏来实现此目的。
这将深度复制您的对象,并在{ error: { code: string, key: string } }
检测到具有code
和message
属性的对象时创建。
如果对象没有这些属性,它将自行调用并继续。
如果value
不是对象,则将该值保持原样。
const objectOld = {
level1: {
level2: {
level3: {
code: 123,
error: 'Message'
}
}
}
};
function transform(obj){
return Object
.entries(obj)
.reduce((acc, [key, value])=>{
if(typeof value === 'object'){
if("code" in value && "error" in value){
acc[key] = {
error: {
key: value.error,
code: value.code
}
}
} else {
acc[key] = transform(value)
}
} else {
acc[key] = value;
}
return acc;
}, {});
}
const objectNew = transform(objectOld);
console.log(
objectNew
);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句