Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

165
Visualizações
La mejor manera de buscar TODOS los términos en una matriz de objetos

Estoy tratando de filtrar objetos en función de si TODOS los términos de búsqueda dados existen en ALGUNOS de los valores de propiedad de CADA objeto en la matriz. Pero tampoco quiero buscar dentro de la propiedad deviceId .

Pero, ¿hay alguna manera de hacerlo con menos código?

Así que hago lo siguiente:

  1. Convierta los objetos en matrices iterables
  2. Filtre la matriz para eliminar matrices con deviceId
  3. Convierta las matrices nuevamente en los objetos de par Clave/Valor
 let DeviceDtoArrayOfArray = []; DeviceDtos.forEach((indiv) => { DeviceDtoArrayOfArray.push(Object.entries(indiv)); }); let DeviceDtoArrayOfArrayFiltered = []; DeviceDtoArrayOfArray.forEach((indiv) => DeviceDtoArrayOfArrayFiltered.push( indiv.filter((indiv) => indiv[0] !== "deviceId") ) ); let DeviceDtoArrayOfArrayFilteredObjects = []; DeviceDtoArrayOfArrayFiltered.forEach((indiv) => { DeviceDtoArrayOfArrayFilteredObjects.push(Object.fromEntries(indiv)); });
  1. Definir matriz de términos de búsqueda de muestra
  2. Para cada objeto del Paso 3, cree una matriz de sus valores de propiedad
  3. Filtre cada Objeto en la matriz buscando cada Término de búsqueda, verifique si existe dentro de algunos de los valores de propiedad del Paso 5, si existe, entonces el objeto se devuelve a una nueva matriz, si no, se filtra.

Matriz de muestra que contiene los objetos con deviceId

 const DeviceDtos = [ { deviceId: 1, deviceName: "Device0000", hwModelName: "Unassigned", deviceTypeName: "Unassigned", serviceTag: "A1A" },...

Ejemplos de términos de búsqueda

 const searchTerms = ["HwModel", "A1A"];

Filtrar objetos según los términos de búsqueda

 const results = DeviceDtoArrayOfArrayFilteredObjects.filter((indiv) => { const propertiesValues = Object.values(indiv); // all property values return searchTerms.every((term) => propertiesValues.some( (property) => property.toLowerCase().indexOf(term.toLowerCase()) > -1 ) ); }); console.log(results);
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Asigne la matriz de dispositivos a una nueva matriz, donde un elemento es el dispositivo y el otro es una matriz de cadenas compuestas a partir de claves y valores (con el deviceId de dispositivo excluido con la sintaxis de reposo).

Luego, todo lo que tiene que hacer es filtrar esa matriz según si .every uno de los términos de búsqueda está incluido en .some de esas cadenas.

 const DeviceDtos = [ { deviceId: 1, deviceName: "Device0000", hwModelName: "Unassigned", deviceTypeName: "Unassigned", serviceTag: "A1A" }, { notincluded: 'notincluded' } ]; const devicesAndStrings = DeviceDtos.map( ({ deviceId, ...obj }) => [obj, Object.entries(obj).flat()] ); const searchTerms = ["hwModel", "A1A"]; const foundDevices = devicesAndStrings .filter(([, strings]) => searchTerms.every( term => strings.some( string => string.includes(term) ) )) .map(([obj]) => obj); console.log(foundDevices);

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda