在对象中搜索字符串(该对象也包含许多其他对象)

时间:2014-09-13 21:49:29

标签: javascript jquery

在以下代码中,在调用Catalog.scan(1, 100)之后,Catalog.Page现在是完整的对象列表 Catalog.Page下的每个对象包含大约42个自己的对象,每个对象都有不同的值,包括Name

我希望能够在您调用Cataog.scan(1, 100)后,在其名称中包含特定字符串的任何页面中搜索任何对象,然后以JSON格式返回这些对象(作为回报)实际的对象;而不是字符串)

这是我目前的代码,所有内容都完全有效,但Catalog.search除外,它返回' []'几百次

感谢您提供的任何帮助,我很感激

var Catalog = {
    def_scan_page:'http://www.roblox.com/catalog/json?browse.aspx?CatalogContext=1&SortType=0&SortAggregation=3&SortCurrency=0&LegendExpanded=true&Category=Featured&PageNumber=',
    load:function(page) {
        $.get(Catalog.def_scan_page+page).done(function(r) {
            Catalog.Page[page] = r;
            console.log("Loaded page",page);
        });
    },
    scan:function(min, max) {
        max++;
        for (i=min;i<max;i++) {
            Catalog.load(i);
        }
    },
    search:function(string) {
        function getObjects(obj, key, val) {
            var objects = [];
            for (var i in obj) {
                if (!obj.hasOwnProperty(i)) continue;
                if (typeof obj[i] == 'object') {
                    objects = objects.concat(getObjects(obj[i], key, val));
                } else if (i == key && obj[key] == val) {
                    objects.push(obj);
                }
            }
            return objects;
        }
        for (var page in Catalog.Page) {
            for (var item in Catalog.Page[page]) {
                console.log(getObjects(Catalog.Page[page][item], 'Name', string))
            }
        }
    },
    Page:{
    },
}

0 个答案:

没有答案