javascript - js遍历,不知哪里写错了,请大神指点
怪我咯
怪我咯 2017-04-10 16:02:38
[JavaScript讨论组]

请大神帮一下
1.不知哪里写错了?
2.还有更方便的写法吗?

打印出来少了两组对象
打印出来的结果:
[{"value":{"name":"水果","id":"1"},"children":[{"name":"梨","id":"7"}]},
{"value":{"name":"蔬菜","id":"2"},"children":[{"name":"通心菜","id":"5"}]},
{"value":{"name":"肉类","id":"3"}}]
本应该是这个结果:
[{"value":{"name":"水果","id":"1"},"children":[{"value":{"name":"苹果","id":"6"}},{"value":{"name":"梨","id":"7"}}]},
{"value":{"name":"蔬菜","id":"2"},"children":[{"value":{"name":"白菜","id":"4"}},{"value":{"name":"通心菜","id":"5"}}]},
{"value":{"name":"肉类","id":"3"}}]

var lo = [
{"id":"1","_":[{"id":"6","pid":"1","title":"苹果","sort":"0"},           {"id":"7","pid":"1","title":"梨","sort":"1"}],"pid":"0","title":"水果","sort":"0"},
{"id":"2","_":[{"id":"4","pid":"2","title":"白菜","sort":"0"},{"id":"5","pid":"2","title":"通心菜","sort":"1"}],"pid":"0","title":"蔬菜","sort":"0"},
{"id":"3","pid":"0","title":"肉类","sort":"0"}
];
var ko = [{'id':'1','name':'第一个'},{'id':'2','name':'第二个'},{'id':'3','name':'第三个'}];
var categoryDataArr = [];
var categoryData = {};
for(i in lo){
    categoryData = {};//循环初始化
    categoryData.value = {};//循环初始化
    categoryData.value.name = lo[i].title;
    categoryData.value.id = lo[i].id;
    if(lo[i]._){
        // console.log(JSON.stringify(lo[i]._));
        for(j in lo[i]._){
            categoryData.children = [];
            categoryData.children.value = {};
            // console.log(JSON.stringify(lo[i]._[j]));
            categoryData.children.value.name = lo[i]._[j].title;
            categoryData.children.value.id = lo[i]._[j].id;
            categoryData.children.push(categoryData.children.value);
            // console.log(JSON.stringify(categoryDataArr.children));
        }
    }
    categoryDataArr.push(categoryData);
}
console.log(JSON.stringify(categoryDataArr));
怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
黄舟

categoryData.children = []; 一行

//...
for(i in lo){
    categoryData = {};//循环初始化
    categoryData.value = {};//循环初始化
    categoryData.value.name = lo[i].title;
    categoryData.value.id = lo[i].id;
    if(lo[i]._){
        categoryData.children = [];    //这里之前写在下面,每次循环都清空了
        for(j in lo[i]._){
            categoryData.children.value = {};
            categoryData.children.value.name = lo[i]._[j].title;
            categoryData.children.value.id = lo[i]._[j].id;
            categoryData.children.push(categoryData.children.value);
        }
    }
    categoryDataArr.push(categoryData);
}
console.log(JSON.stringify(categoryDataArr));

答更方便的写法,这样代码结构会比较好看点,有些细节不知道合不合规范,求打脸

var lo = [
{"id":"1","_":[{"id":"6","pid":"1","title":"苹果","sort":"0"}, {"id":"7","pid":"1","title":"梨","sort":"1"}],"pid":"0","title":"水果","sort":"0"},
{"id":"2","_":[{"id":"4","pid":"2","title":"白菜","sort":"0"},{"id":"5","pid":"2","title":"通心菜","sort":"1"}],"pid":"0","title":"蔬菜","sort":"0"},
{"id":"3","pid":"0","title":"肉类","sort":"0"}
];
var ko = [{'id':'1','name':'第一个'},{'id':'2','name':'第二个'},{'id':'3','name':'第三个'}];
var categoryDataArr = [];
for(i in lo){
    var categoryData = {};
    categoryDataArr.push(categoryData);
    categoryData.value = {
        id:lo[i].id,
        name:lo[i].title
    };
    if(lo[i]._){
        categoryData.children = [];    
        for(j in lo[i]._){
            categoryData.children.push({
                id:lo[i]._[j].id,
                name:lo[i]._[j].title
            });
        }
    }
}
console.log(categoryDataArr);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号