js 将对象的属性全部提升到第一层
数据结构如下
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,请各位指教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我发现大家都只判断了typeof(obj) === 'object' 但是还要判断是否是null
我原先一直在纠结没有指针怎么修改原变量,现在找到了一个简单的办法
可以去看一下二叉树的递归,相信应该有帮助
恩,你一定吃鸡吃多了。。。
这是我封装的一个更改属性名称的方法。思想就是判断其属性是否是对象,如果是,那么递归调用并记录路径path。
如果不是就把它返回到一个新的对象中。
当然,这个算法有一定的局限性。不过在你这个例子中是可以适用的。你可以试试
递归拼接key就可以了呀,这是es6语法版