"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo filtrar una matriz de objetos de JavaScript en función de múltiples condiciones?

¿Cómo filtrar una matriz de objetos de JavaScript en función de múltiples condiciones?

Publicado el 2024-11-08
Navegar:762

How to Filter a JavaScript Array of Objects Based on Multiple Conditions?

Filtrado de matrices en JavaScript según múltiples condiciones

Declaración del problema

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.

Solución propuesta

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.

Último tutorial Más>

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