При наличии массива объектов и объекта фильтра цель состоит в том, чтобы отфильтровать и упростить массив на основе нескольких условий, указанных в фильтре. Однако конкретная проблема возникает, когда фильтр содержит несколько свойств.
Рассмотрим следующий сегмент кода:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Iterate over the array
for (var i = 0; i В предлагаемом решении проблема возникает, когда фильтр содержит несколько свойств. В частности, во время второй итерации сравнение пользователей[i][prop] и filter[prop] неверно. Чтобы это исправить, мы можем изменить код следующим образом:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Apply filter on the array
users = users.filter((user) => user[prop] === filter[prop]);
}
}
return result;
}
В этой версии мы используем встроенный метод фильтрации массивов для динамического применения условий фильтра. Это гарантирует, что в результат будут включены только объекты, удовлетворяющие всем указанным условиям.
Пример использования
С обновленным решением процесс фильтрации будет работать должным образом:
var users = [{
name: 'John',
email: '[email protected]',
age: 25,
address: 'USA'
}, {
name: 'Tom',
email: '[email protected]',
age: 35,
address: 'England'
}, {
name: 'Mark',
email: '[email protected]',
age: 28,
address: 'England'
}];
var filter = {
address: 'England',
name: 'Mark'
};
var filteredUsers = filterUsers(users, filter);
console.log(filteredUsers); // Output: [{ name: 'Mark', email: '[email protected]', age: 28, address: 'England' }]
Это решение устраняет проблему, из-за которой не выполнялось несколько условий фильтра. применяется правильно, гарантируя, что полученный отфильтрованный массив точно отражает указанные критерии.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3