Dada uma matriz de objetos e um objeto de filtro, o objetivo é filtrar e simplifique a matriz com base em várias condições especificadas no filtro. No entanto, um problema específico surge quando o filtro contém várias propriedades.
Considere o seguinte segmento de código:
function filterUsers(users, filter) {
var result = [];
for (var prop in filter) {
if (filter.hasOwnProperty(prop)) {
// Iterate over the array
for (var i = 0; i Na solução proposta, o problema ocorre quando o filtro contém múltiplas propriedades. Especificamente, durante a segunda iteração, a comparação entre users[i][prop] e filter[prop] está incorreta. Para corrigir isso, podemos modificar o código para o seguinte:
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;
}
Nesta versão, utilizamos o método de filtro integrado de matrizes para aplicar as condições de filtro dinamicamente. Isso garante que apenas objetos que atendam a todas as condições especificadas sejam incluídos no resultado.
Exemplo de uso
Com a solução atualizada, o processo de filtragem funcionará conforme o esperado:
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' }]
Esta solução resolve o problema em que várias condições de filtro não eram sendo aplicado corretamente, garantindo que a matriz filtrada resultante reflita com precisão os critérios especificados.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3