Javascript 过滤多维JSON数组

Javascript 过滤多维JSON数组,javascript,json,underscore.js,Javascript,Json,Underscore.js,以下是JSON的详细信息: var array={ "app": { "categories": { "cat_222": { "id": "555", "deals": [{ "id": "73", "shop": "JeansWest" },

以下是JSON的详细信息:

var array={
    "app": {
        "categories": {
            "cat_222": {
                "id": "555",
                "deals": [{
                    "id": "73",
                    "shop": "JeansWest"
                },
                {
                    "id": "8630",
                    "shop": "Adidas"

                },
                {
                    "id": "11912",
                    "shop": "Adidas"
                }]
            },
            "cat_342": {
                "id": "232",
                "deals": [{
                    "id": "5698",
                    "shop": "KFC"
                },
                {
                    "id": "5701",
                    "shop": "KFC"
                },
                {
                    "id": "5699",
                    "shop": "MC"
                }]
            }
        }
    }
}
我试图过滤数组,使其具有
shop
,其中包含
da
模式

var filted = _.filter(array.app.categories,function(item) {
    return _.any(item.deals,function(c) {
        return c.shop.indexOf('da') != -1;
    });
});
==========更新=============================================================

我刚发现,这个代码是有效的。但它会返回这样的结果:

[{
"id": "555",
"deals": [{
    "id": "73",
    "shop": "JeansWest"
}, {
    "id": "8630",
    "shop": "Adidas"
}, {
    "id": "11912",
    "shop": "Adidas"
}]
}]
[{
"id": "555",
"deals": [{

    "id": "8630",
    "shop": "Adidas"
}, {
    "id": "11912",
    "shop": "Adidas"
}]
}]
理想情况下,我想得到这样的东西:

[{
"id": "555",
"deals": [{
    "id": "73",
    "shop": "JeansWest"
}, {
    "id": "8630",
    "shop": "Adidas"
}, {
    "id": "11912",
    "shop": "Adidas"
}]
}]
[{
"id": "555",
"deals": [{

    "id": "8630",
    "shop": "Adidas"
}, {
    "id": "11912",
    "shop": "Adidas"
}]
}]
你可以这样做

var filted = _.reduce(array.app.categories, function (memo, item) {
    var result = _.filter(item.deals, function (c) {
        return c.shop.indexOf('da') != -1;
    });

    if (result.length > 0) {
        var newResult = {};
        newResult.deals = result;
        newResult.id = item.id;
        memo = _.union(memo, newResult);
    }

    return memo;
}, []);

首先,您缺少一个
})
var filted=语句,但这可能只是一个复制粘贴错误。已修改..这是复制和粘贴错误..
数组。类别不存在。它应该是
array.app.categories
.added…它是从一个巨大的json数组修改而来的,很抱歉混淆了。。。它仍然不起作用这个“不起作用”是怎么回事?它的回报是什么?它应该返回什么?