为了账号安全,请及时绑定邮箱和手机立即绑定

js 将对象的属性全部提升到第一层

js 将对象的属性全部提升到第一层

FFIVE 2019-02-19 17:16:39
数据结构如下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

    }

}

当然,这个算法有一定的局限性。不过在你这个例子中是可以适用的。你可以试试


查看完整回答
反对 回复 2019-02-23
  • 1 回答
  • 0 关注
  • 593 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信