数据结构如下var a = { b: { c: { d: '平底锅' } }, e: { f: { g: 'M416' }, h: { i: '98K' } }}请编写算法:要求能访问 a.b_c_d 可以得到 平底锅要求能访问 a.e_f_g 可以得到 M416要求能访问 a.e_f_i 可以得到 98K最终结果数据结构如下 b_c_d: '平底锅', e_f_g: 'M416', e_f_h: '98K' }我觉得应该是使用递归,但是不知道怎么修改到a的key,请各位指教
1 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
恩,你一定吃鸡吃多了。。。
这是我封装的一个更改属性名称的方法。思想就是判断其属性是否是对象,如果是,那么递归调用并记录路径path。
如果不是就把它返回到一个新的对象中。
var obj2 = {}
function changeObj(obj,path) {
if (typeof obj === 'object') {
for (x in obj) {
changeObj(obj[x],path+x)
}
}
else {
obj2[path] = obj
}
}
当然,这个算法有一定的局限性。不过在你这个例子中是可以适用的。你可以试试
添加回答
举报
0/150
提交
取消