如何循环一个数组,最终动态拼成一个新的组数

tyi513517 2017-05-22 09:18:34
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'
}
}
// 最终写成
// {
// a: 'a',
// b_1: 'b_1'
// b_2: 'b_2',
// b_3_1: 'b_3_1',
// b_3_2: 'b_3_2',
// b_3_3: 'b_3_3',
// c_1: 'c_1',
// c_2: 'c_2',
// }

怎么动态把obj写成下面的格式呢?以下是我做的一个循环,但是不对
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)
...全文
207 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
_林小夕 2017-05-22
  • 打赏
  • 举报
回复
#1 此贴可结……
似梦飞花 2017-05-22
  • 打赏
  • 举报
回复

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 o={};
    function trans(obj,key){
        for(var i in obj){
            if(obj.hasOwnProperty(i)){
                if(typeof obj[i]=='object'){
                    trans(obj[i],(key||'')+i);
                }else{
                    o[(key?key:'')+i]=obj[i];
                }
            }
        }
    }
    trans(obj)
    console.log(o);

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧