var obj = {
    ​index: 'index.json'
list: {
​index: '/list/index.json',
​add: '/list/add.json',
​list: '/list/list.json'
​list1: {
​    ​index: '/list/index.json',
​    ​add: '/list/add.json',
​    ​list: '/list/list.json'
},
​list2: {
​    ​index: '/list/index.json',
​    ​add: '/list/add.json',
​    ​list: '/list/list.json'
}
},
list2: {
​index: '/list2/index.json',
​aaa: '/list2/add.json',
​bbb: '/list2/list.json'
},
list3: {
​index: '/list3/index.json',
​aaa: '/list3/add.json',
​bbb: '/list3/list.json'
}
}
var newObj = {
    ​index: 'index.json' ,
    ​list_index : '/list/index.json',
    ​list_add: '/list/add.json',
    ​list_list: '/list/list.json',
    ​list2_index: '/list2/index.json',
    ​list2_aaa: '/list2/add.json',
    ​list3_index: '/list3/index.json',
list_​list1_index: 'obj对应的值',
list_​list1_add: 'obj对应的值'
}通过obj怎么生成一个newObj呢?obj的键值拼接然后属性是对应的值

解决方案 »

  1.   

    newObj.list_​list1_index=obj.list1
    不希望是引用的话
    newObj.list_​list1_index=Object.create(obj.list1)
      

  2.   


    var obj = {
    a: 'a',
    b: {
    _1: 'b_1',
    _2: 'b_2',
    _3: {
    _1: 'b_3_1',
    _2: 'b_3_2',
    _3: 'b_3_3'
    }
    },
    c: {
    _1: 'c_1',
    _2: 'c_2'
    }
    }
    var arrK = []
    var arrV = []
    for (var k in obj) {
    if (obj[k].constructor === Object) {
    for (var kk in obj[k]) {
    if (obj[k][kk].constructor === Object) {
    for (var kkk in obj[k][kk]) {
    arrK.push(k + '_' + kk + '_' + kkk)
    arrV.push(obj[k][kk][kkk])
    }
    }
    arrK.push(k + '_' + kk)
    arrV.push(obj[k][kk])
    }
    }
    arrK.push(k)
    arrV.push(obj[k])
    }
    console.log(arrK)
    console.log(arrV)obj的b和c需要过滤下,其值也需过滤。就是当下面有对象时键值跟值不需要