Dada una matriz de objetos y un objeto de filtro, el objetivo es filtrar y simplifique la matriz en función de múltiples condiciones especificadas en el filtro. Sin embargo, surge un problema específico cuando el filtro contiene varias propiedades.
Considere el siguiente 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 En la solución propuesta, el problema ocurre cuando el filtro contiene múltiples propiedades. Específicamente, durante la segunda iteración, la comparación entre usuarios[i][prop] y filtro[prop] es incorrecta. Para solucionar este problema, podemos modificar el código a lo siguiente:
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;
}
En esta versión, utilizamos el método de filtro integrado de matrices para aplicar las condiciones del filtro de forma dinámica. Esto garantiza que solo se incluyan en el resultado los objetos que cumplan todas las condiciones especificadas.
Ejemplo de uso
Con la solución actualizada, el proceso de filtrado funcionará como se espera:
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 solución soluciona el problema por el cual no se cumplían varias condiciones de filtro se aplica correctamente, lo que garantiza que la matriz filtrada resultante refleje con precisión los criterios especificados.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3