sau*_*hah 1 javascript arrays attributes json filter
users = [
{
"username": "Alice",
"firstName": "Alice-U",
"lastName": "Wonderland"
},
{
"username": "bob",
"firstName": "Bob-u",
"lastName": "Builder",
},
{
"username": "charly",
"firstName": "Charly-u",
"lastName": "Brown",
}
]
Run Code Online (Sandbox Code Playgroud)
我希望能够根据多个值过滤该数组,例如:
搜索条件:{ "username" : "Alice" }应返回:
{
"username": "Alice",
"firstName": "Alice-U",
"lastName": "Wonderland"
}
Run Code Online (Sandbox Code Playgroud)
类似:{ "username" : "charly", "firstName": "Charly-u" }应该返回:
{
"username": "charly",
"firstName": "Charly-u",
"lastName": "Brown",
}
Run Code Online (Sandbox Code Playgroud)
使用 javaScript 或 jQuery 进行精确字符串匹配。
您可以使用它.every来检查每个条件键是否匹配:
function filterBy(list, criteria) {
return list.filter(candidate =>
Object.keys(criteria).every(key =>
candidate[key] == criteria[key]
)
);
}
let users = [
{ "username": "Alice", "firstName": "Alice-U", "lastName": "Wonderland" },
{ "username": "bob", "firstName": "Bob-u", "lastName": "Builder" },
{ "username": "charly", "firstName": "Charly-u", "lastName": "Brown" }
];
console.log(filterBy(users, { "username" : "Alice" }));
console.log(filterBy(users, { "username" : "charly", "firstName": "Charly-u" }));Run Code Online (Sandbox Code Playgroud)