Javascript 在梦中循环在梦中循环在梦中循环

Javascript 在梦中循环在梦中循环在梦中循环,javascript,json,nested-loops,Javascript,Json,Nested Loops,我正在尝试使用一些API,作为回报,它们给了我一个巨大的JSON对象,我需要将它与我的JSON对象进行比较,但是,我有太多的循环,这不再有趣了 我的当前对象如下所示: var courses = { art_117: { course_folder: true, sco_id: "12111", subFolders: [{ folderName: "SET_01", isFolder: tr

我正在尝试使用一些API,作为回报,它们给了我一个巨大的JSON对象,我需要将它与我的JSON对象进行比较,但是,我有太多的循环,这不再有趣了

我的当前对象如下所示:

var courses = {
    art_117: {
        course_folder: true,
        sco_id: "12111",
        subFolders: [{
            folderName: "SET_01",
            isFolder: true,
            number: 1,
            sco_id: "121116"
        }, {
            folderName: 'SET_06',
            isFolder: true,
            number: 6,
            sco_id: '121117'
        }]
    }
}
var json = {
    "status": {
        "code": "ok"
    },
    "scos": {
        "sco": [{
            "name": "SET_01",
            "url_path": "/134123/",
            "is_seminar": "false",
            "sco_id": "63453452",
            "folder_id": "12111",
            "type": "folder",
            "icon": "folder",
            "display_seq": "0",
            "duration": "",
            "is_folder": "1"
        }, {
            "name": "SET_02",
            "url_path": "/f4r8y3l0sy6/",
            "is_seminar": "false",
            "sco_id": "123413",
            "folder_id": "12111",
            "type": "folder",
            "icon": "folder",
            "display_seq": "0",
            "duration": "",
            "is_folder": "1"
        }, {
            "name": "SET_03",
            "url_path": "/f7d6lf2xbb1/",
            "is_seminar": "false",
            "sco_id": "12341234",
            "folder_id": "12111",
            "type": "folder",
            "icon": "folder",
            "display_seq": "0",
            "duration": "",
            "is_folder": "1"
        }]
    }
}
返回的对象如下所示:

var courses = {
    art_117: {
        course_folder: true,
        sco_id: "12111",
        subFolders: [{
            folderName: "SET_01",
            isFolder: true,
            number: 1,
            sco_id: "121116"
        }, {
            folderName: 'SET_06',
            isFolder: true,
            number: 6,
            sco_id: '121117'
        }]
    }
}
var json = {
    "status": {
        "code": "ok"
    },
    "scos": {
        "sco": [{
            "name": "SET_01",
            "url_path": "/134123/",
            "is_seminar": "false",
            "sco_id": "63453452",
            "folder_id": "12111",
            "type": "folder",
            "icon": "folder",
            "display_seq": "0",
            "duration": "",
            "is_folder": "1"
        }, {
            "name": "SET_02",
            "url_path": "/f4r8y3l0sy6/",
            "is_seminar": "false",
            "sco_id": "123413",
            "folder_id": "12111",
            "type": "folder",
            "icon": "folder",
            "display_seq": "0",
            "duration": "",
            "is_folder": "1"
        }, {
            "name": "SET_03",
            "url_path": "/f7d6lf2xbb1/",
            "is_seminar": "false",
            "sco_id": "12341234",
            "folder_id": "12111",
            "type": "folder",
            "icon": "folder",
            "display_seq": "0",
            "duration": "",
            "is_folder": "1"
        }]
    }
}
这是我目前的密码

if (typeof json.scos.sco != 'undefined') {
    var scos = json.scos.sco;
    var len = scos.length;
    for (var i = 0; i < len; i++) {
        var id = scos[i]['folder_id'];
        var name = scos[i]['name'];
        for (var j = 0; j < keys.length; j++) {
            if (adobe.courses[keys[j]]['sco_id'] == id) {
                var subFolders = adobe.courses[keys[j]]['subFolders'];
                for (var k = 0; k < sections.length; k++) {
                    if (sections[k]['folderName'] == name) {
                        courses[keys[j]]['subFolders'][k]['sco_id'] = scos[i]['sco_id'];
                        courses[keys[j]]['subFolders'][k]['isFolder'] = true;
                    }
                }
            }
        }
    }
}

如何重写它,使其不存在3个嵌套循环?

keys.length什么是keys?我看不出有超过两个循环的原因。那些sco_ID是什么?它们可以用于全局高效的查找结构吗?keys.length是原始json对象中对象键的列表。sco_id是从存储在当前对象中的json对象返回的文件夹id