【发布时间】:2016-10-14 14:10:58
【问题描述】:
我有一个包含对象的数组。总之
Array =[
{id = 1, products='1,2'} //products consist of String with Products Seperates by','
{id = 2, products='1'}
{id = 3, products='3'}
{id = 4, products='1,2,3'}
{id = 5, products='2,3'}
...
]
SelectedProd = ['2,3']// consists a String as well seperated by ','
这些都显示在一个表格中。我现在正在编写一个过滤器以仅显示通过 MultipleSelect 选择的过滤器。
因此,我想过滤所有对象,其中至少一个产品位于 products
所以我的过滤器正在获取对象和选定的产品
.filter('filterByProd', () => {
return (objects,prod) => {
var filtered = [];
/*
FIlter Array
*/
return filtered;
};
});
如果用户选择 Product = '2,3',它将返回带有 id=1/3/4/5.. 的对象
同样清楚的是,如果没有选择全部返回。
如果可能,请使用 lodash,但也接受其他解决方案。
我遇到的问题是函数只是在 lodash Docu 中列出,无法阅读我需要的每个人。
目前我被困在
.filter('filterByProd', () => {
return (items,prod) => {
var filtered = [];
filtered = _.filter(items,['products',prod]);
return filtered;
};
});
这只是给我与'2,3' 的完全匹配 -> 仅Object = id=5。
我需要一些东西
filtered = findAllWhere(selectedProducts,iterateOverSendObjects(checkProductsOfObjects)+_.ifIsAtLeastOneOfSendProducts))
【问题讨论】:
-
为什么要为
'2,3'之类的产品提供一个字符串,而在您的问题中使用[2,3]的数组更有意义?这将是一个简单的迭代它们的问题 -
我从我的服务器上得到它。
-
无论哪种方式,您都需要解析它。您可以在获取数据或尝试过滤时立即执行此操作
标签: angularjs underscore.js lodash angular-filters