我需要实现过滤对象数组的函数。 Filters 数组由具有属性名称和要针对用户中给定属性进行过滤的值的对象组成。
示例:
var filters = [
{
column: 'username',
value: 'test user'
},
{
column: 'name',
value: 'test name'
}
]
var users = [
{
name: 'test name user',
username: 'some test user'
},
{
name: 'another name',
username: 'another username'
}
]
// filter logic
console.log(users); // [{'name': 'test name user', 'username': 'some test user'}]
最佳答案
您可以迭代用户和 Array#filter 的列表通过使用 Array#some 进行迭代(或者 - 如果至少有一个匹配)或 Array#every (并且 - 全部都必须匹配)。
var filters = [{"column":"username","value":"test user"},{"column":"name","value":"test name"}];
var users = [{"name":"test name user","username":"test user"},{"name":"another name","username":"another username"}];
var result = users.filter(function(user) {
return filters.some(function(filter) { // use some for Or, and every for And
return user[filter.column] === filter.value;
});
});
console.log(result);
关于javascript - 对象数组的过滤函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45075040/