【发布时间】:2021-07-09 12:46:20
【问题描述】:
这是我从服务器得到的结果。
arrays=
[ 0:
{ Id: 1
, name: 'test1'
, parameters:
[ { name: 'application_instance', value: 'home', type: 'generic' }
, { name: 'application_name', value: 'initial', type: 'generic' }
, { name: 'application_role', value: 'disk_init_role', type: 'generic' }
, { name: 'customer_environment', value: 'development', type: 'generic' }
, { name: 'customer_name', value: 'guest', type: 'generic' }
] }
, 1:
{ Id: 2
, name: 'test2'
, parameters:
[ { name: 'application_instance', value: 'home', type: 'generic' }
, { name: 'application_name', value: 'disk_init', type: 'generic' }
, { name: 'application_role', value: 'initial', type: 'generic' }
, { name: 'customer_environment', value: 'development', type: 'generic' }
, { name: 'customer_name', value: 'guest', type: 'generic' }
] }
, 2:
{ Id: 3
, name: 'test3'
, parameters:
[ { name: 'application_instance', value: 'home', type: 'generic' }
, { name: 'application_name', value: 'initial', type: 'generic' }
, { name: 'application_role', value: 'initial', type: 'generic' }
, { name: 'customer_environment', value: 'development', type: 'generic' }
, { name: 'customer_name', value: 'guest', type: 'generic' }
] }
, 3:
{ Id: 4
, name: 'test4'
, parameters:
[ { name: 'application_instance', value: 'home', type: 'generic' }
, { name: 'application_name', value: 'initial', type: 'generic' }
, { name: 'application_role', value: 'disk_init_role', type: 'generic' }
, { name: 'customer_environment', value: 'development', type: 'generic' }
, { name: 'customer_name', value: 'guest', type: 'generic' }
] }
, 5:
{ Id: 5
, name: 'test5'
, parameters:
[ { name: 'application_instance', value: 'home', type: 'generic' }
, { name: 'application_name', value: 'initial_disk_init', type: 'generic' }
, { name: 'application_role', value: 'disk_initial', type: 'generic' }
, { name: 'customer_environment', value: 'development', type: 'generic' }
, { name: 'customer_name', value: 'guest', type: 'generic' }
]
}
]
我需要用多个条件过滤它。
filters = {
application_name: 'initial',
application_role: 'disk_init_role'
}
我做了一个函数来过滤数据,但这仅适用于一个条件
filterArray (array, filters) {
for (var [key, value] of Object.entries(filters)) {
const res = Object.values(array).filter(
item => item.parameters.some(param => param.name === `${key}` && param.value === `${value}`)
)
return results
}
}
循环遍历数组以便满足两个条件(过滤器)的最佳方法是什么? 结果需要只有 id 1 和 4,并且需要在返回结果数组中。
【问题讨论】:
-
“这只适用于一个条件”是什么意思?如果只需要检查“名称”和“键”属性,我认为您的过滤功能没有任何问题
标签: javascript arrays loops