【发布时间】:2019-10-27 02:56:30
【问题描述】:
我有一个庞大的数据集合 700 多个项目,我想通过对象的动态数组进行过滤,假设用户输入了 ode,我的脚本应该搜索每个过滤器,而无需我执行类似 @987654322 的操作@
const hugeData = [{name:"store 1",code : "code 1", available : false},{name : "store 2",code : "simple_code",available : true},{name : "sto 3",code : "has no cde",available : true}...]
const filters = [{ code : "ode", name : "re" }]
我期待的结果是
// output
[{name : "store 1", code : "code 1", available : false},{name : "store 2",code : "simple_code",available : true}]
我用lodash 解决了这个问题,但是功能很慢,代码很差,有没有其他方法可以做到这一点?
const results = []
_.map(hugeData, store => {
_.map(filters, tag => {
Object.keys(tag).map(tagOb => {
if (store[tagOb] && store[tagOb].includes(tag[tagOb])) {
results.push(store);
}
});
});
});
【问题讨论】:
-
不能
filters只是键值对的单个对象吗?为什么它需要在一个数组中? -
@Anthony 是的,我可以修改它,但如果它是一个简单的对象,它应该如何工作?
-
多个过滤器是否意味着它们都必须匹配?
-
ode是什么? -
@Anthony 不必全部匹配,只有一个匹配,结果应该会出现
标签: javascript arrays filter lodash