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,请各位指教


FFIVE
浏览 594回答 1
1回答

慕斯709654

恩,你一定吃鸡吃多了。。。这是我封装的一个更改属性名称的方法。思想就是判断其属性是否是对象,如果是,那么递归调用并记录路径path。如果不是就把它返回到一个新的对象中。var obj2 = {}function changeObj(obj,path) {    if (typeof obj === 'object') {        for (x in obj) {            changeObj(obj[x],path+x)        }    }    else {        obj2[path] = obj    }}当然,这个算法有一定的局限性。不过在你这个例子中是可以适用的。你可以试试
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript