我创建过滤管道
@Pipe({name: 'filter'})
export class filterPipe implements PipeTransform {
transform(model: any[], query: number): any[] {
return model.filter(listProductCatalog =>
(listProductCatalog.items[0].quotaFlg == 'Y' || listProductCatalog.items[1].quotaFlg == 'Y' )
);
}}}}
我需要知道如何为返回模型创建循环(或其他东西).filter listProductCatalog.items [i] 因为有时候物品有更多的0,1。同一产品目录的价值
value for the same product catalog
{
"listProductCatalog": [
{
"level1": "APPLE",
"level2": "IPAD
RETINA 16GB", "priceIncAmt": 40000, "items": [{ "listSubItem":
[
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD4 16 GB",
"color": "WHITE",
"stockQty": 100,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "Y",
"tradeFlg": "Y"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "BLACK",
"stockQty": 6,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
}
]
},
{
"level1": "APPLE",
"level2": "IPAD RETINA 64GB",
"priceIncAmt": 0,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "BLACK",
"stockQty": 5,
"unitAmt": 0,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "WHITE",
"stockQty": 4,
"unitAmt": 0,
"stepQty": 1,
"quotaFlg": "Y",
"tradeFlg": "Y"
}
]
},
{
"level1": "APPLE",
"level2": "IPAD RETINA 32GB",
"priceIncAmt": 0,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD4 32 GB",
"color": "BLACK",
"stockQty": 3,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "Y",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "WHITE",
"stockQty": 15,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "Y"
}
]
},
{
"level1": "APPLE",
"level2": "IPAD MINI 64GB",
"priceIncAmt": 0,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD MINI64GB",
"color": "WHITE",
"stockQty": 10,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD MINI64GB",
"color": "BLACK",
"stockQty": 7,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
}
]
},
{
"level1": "APPLE",
"level2": "IPHONE 4 16GB",
"priceIncAmt": 0,
"items": [
{
"groupMatNo": "PD1302003143",
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "HANDSET",
"brand": "APPLE",
"model": "IPHONE4 16GB",
"color": "WHITE",
"stockQty": 3,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "HANDSET",
"brand": "APPLE",
"model": "IPHONE4 16GB",
"color": "BLACK",
"stockQty": 7,
"unitAmt": 0,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
}
]
}
]
}
抱歉我的英文
谢谢你的帮助
答案 0 :(得分:0)
可以在js中使用map和filter函数。假设您只想返回项目,请按照以下方式进行操作。在MDN上阅读map,filter和reduce。
var jsonStr = "{\"listProductCatalog\":[{\"level1\":\"APPLE\",\"level2\":\"IPAD RETINA 16GB\",\"priceIncAmt\":40000,\"items\":[{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"model\":\"IPAD4 16 GB\",\"color\":\"WHITE\",\"stockQty\":100,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"Y\",\"tradeFlg\":\"Y\"},{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"color\":\"BLACK\",\"stockQty\":6,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"N\"}]},{\"level1\":\"APPLE\",\"level2\":\"IPAD RETINA 64GB\",\"priceIncAmt\":0,\"items\":[{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"color\":\"BLACK\",\"stockQty\":5,\"unitAmt\":0,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"N\"},{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"color\":\"WHITE\",\"stockQty\":4,\"unitAmt\":0,\"stepQty\":1,\"quotaFlg\":\"Y\",\"tradeFlg\":\"Y\"}]},{\"level1\":\"APPLE\",\"level2\":\"IPAD RETINA 32GB\",\"priceIncAmt\":0,\"items\":[{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"model\":\"IPAD4 32 GB\",\"color\":\"BLACK\",\"stockQty\":3,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"Y\",\"tradeFlg\":\"N\"},{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"color\":\"WHITE\",\"stockQty\":15,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"Y\"}]},{\"level1\":\"APPLE\",\"level2\":\"IPAD MINI 64GB\",\"priceIncAmt\":0,\"items\":[{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"model\":\"IPAD MINI64GB\",\"color\":\"WHITE\",\"stockQty\":10,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"N\"},{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"SPECIAL PRODUCT\",\"brand\":\"APPLE\",\"model\":\"IPAD MINI64GB\",\"color\":\"BLACK\",\"stockQty\":7,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"N\"}]},{\"level1\":\"APPLE\",\"level2\":\"IPHONE 4 16GB\",\"priceIncAmt\":0,\"items\":[{\"groupMatNo\":\"PD1302003143\",\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"HANDSET\",\"brand\":\"APPLE\",\"model\":\"IPHONE4 16GB\",\"color\":\"WHITE\",\"stockQty\":3,\"unitAmt\":1,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"N\"},{\"listSubItem\":[{\"priceIncAmt\":0}],\"productType\":\"DEVICE\",\"productSubtype\":\"HANDSET\",\"brand\":\"APPLE\",\"model\":\"IPHONE4 16GB\",\"color\":\"BLACK\",\"stockQty\":7,\"unitAmt\":0,\"stepQty\":1,\"quotaFlg\":\"N\",\"tradeFlg\":\"N\"}]}]}"
var json = JSON.parse(jsonStr);
var result = json.listProductCatalog
.reduce((a, b)=> a.concat(b.items.filter(i => i.quotaFlg === 'Y')), [])
.map(j => `${j.brand || ''} ${j.color || ''} ${j.model || ''}`);
console.log(result);

这是一个小提琴:https://jsfiddle.net/jayas_godblessall/wg3h01ej/
根据这些内容,您可以随意修改,就像您希望整个对象从上方删除map
一样,只需确保我在您的图片上捕获您的结果 < / p>
答案 1 :(得分:0)
就是这样,你可以这样做:
var resultData = model.listProductCatalog.filter(listProductCatalog => {
listProductCatalog.items = listProductCatalog.items.filter(item => {
if(item.quotaFlg === 'Y'){
return true;
}
});
return listProductCatalog.items.length > 0;
});
OR更短版本:
var resultData = model.listProductCatalog.filter(listProductCatalog => {
listProductCatalog.items = listProductCatalog.items.filter(item => item.quotaFlg === 'Y');
return listProductCatalog.items.length > 0;
});
请运行以下代码段并检查控制台输出:
var model = {
"listProductCatalog": [
{
"level1": "APPLE",
"level2": "IPAD RETINA 16GB",
"priceIncAmt": 40000,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD4 16 GB",
"color": "WHITE",
"stockQty": 100,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "Y",
"tradeFlg": "Y"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "BLACK",
"stockQty": 6,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
}
]
},
{
"level1": "APPLE",
"level2": "IPAD RETINA 64GB",
"priceIncAmt": 0,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "BLACK",
"stockQty": 5,
"unitAmt": 0,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "WHITE",
"stockQty": 4,
"unitAmt": 0,
"stepQty": 1,
"quotaFlg": "Y",
"tradeFlg": "Y"
}
]
},
{
"level1": "APPLE",
"level2": "IPAD RETINA 32GB",
"priceIncAmt": 0,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD4 32 GB",
"color": "BLACK",
"stockQty": 3,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "Y",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"color": "WHITE",
"stockQty": 15,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "Y"
}
]
},
{
"level1": "APPLE",
"level2": "IPAD MINI 64GB",
"priceIncAmt": 0,
"items": [
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD MINI64GB",
"color": "WHITE",
"stockQty": 10,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "SPECIAL PRODUCT",
"brand": "APPLE",
"model": "IPAD MINI64GB",
"color": "BLACK",
"stockQty": 7,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
}
]
},
{
"level1": "APPLE",
"level2": "IPHONE 4 16GB",
"priceIncAmt": 0,
"items": [
{
"groupMatNo": "PD1302003143",
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "HANDSET",
"brand": "APPLE",
"model": "IPHONE4 16GB",
"color": "WHITE",
"stockQty": 3,
"unitAmt": 1,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
},
{
"listSubItem": [
{
"priceIncAmt": 0
}
],
"productType": "DEVICE",
"productSubtype": "HANDSET",
"brand": "APPLE",
"model": "IPHONE4 16GB",
"color": "BLACK",
"stockQty": 7,
"unitAmt": 0,
"stepQty": 1,
"quotaFlg": "N",
"tradeFlg": "N"
}
]
}
]
};
var resultData = model.listProductCatalog.filter(listProductCatalog => {
listProductCatalog.items = listProductCatalog.items.filter(item => {
if(item.quotaFlg === 'Y'){
return true;
}
});
return listProductCatalog.items.length > 0;
});
console.log(resultData);
&#13;