Javascript 过滤多维JSON数组
以下是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" },
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数组修改而来的,很抱歉混淆了。。。它仍然不起作用这个“不起作用”是怎么回事?它的回报是什么?它应该返回什么?