创建一个与提供的对象具有相同值的对象,以及通过为每个键运行提供的函数生成的键。
用Object.keys()迭代对象的键。
用Array.prototype.reduce()创建具有相同值和映射键的新对象fn。
JavaScript
const deepMapKeys = (obj, fn) =>
Array.isArray(obj)
? obj.map(val => deepMapKeys(val, fn))
: typeof obj === 'object'
? Object.keys(obj).reduce((acc, current) => {
const key = fn(current);
const val = obj[current];
acc[key] =
val !== null && typeof val === 'object' ? deepMapKeys(val, fn) : val;
return acc;
}, {})
: obj;
示例代码
constobj={foo:'1',nested:{child:{withArray:[
{grandChild:['hello']
}
]
}
}
};constupperKeysObj=deepMapKeys(obj,key=>key.toUpperCase());/*
{
"FOO":"1",
"NESTED":{
"CHILD":{
"WITHARRAY":[
{
"GRANDCHILD":[ 'hello' ]
}
]
}
}
}
*/
更多内容请访问我的网站:https://www.icoderoad.com