Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

87
Vistas
Filas únicas Indexeddb matriz indexada

Tengo una tienda en IndexedDB donde la ruta de la clave es para el Id. de propiedad y también tengo una matriz indexada llamada IndexedWords

 [{ Id: 1, IndexedWords: ['Foo', 'bar'] }, { Id: 2, IndexedWords: [] } }

Estoy tratando de encontrar todas las filas vacías en la tienda y esto al encontrar la identificación de todos con valor en IndexedWords + toda la identificación de la tienda e intersectar esas matrices. La idea funciona, pero el problema es que estoy recibiendo los ID de IndexedWords x cantidad de veces donde x coincide con la cantidad de entradas en IndexedWords y cuando tengo 5000 filas y cada fila tiene más de 100 palabras, la matriz se vuelve más grande y más difícil. trabajar con. ¿Hay alguna forma de devolver solo ID distintos de IndexedDB en la consulta? Código actual a continuación

 var trans = db.transaction(storeName, IDBTransaction.READ_ONLY); var index = trans.objectStore(storeName).index("IndexedWords"); var getAllRequest = index.getAllKeys(); getAllRequest.onsuccess = function (evt) { items = evt.target.result; }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Si entiendo su pregunta, podría intentar crear un índice de entrada múltiple en IndexedWords y luego iterar sobre las claves únicas del índice.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Espero que esto ayude, sin la sobrecarga de la API de IndexedDB, ya que no pude hacer funcionar su código de muestra de IndexedDB.

Repita las palabras y cree un nuevo objeto que contenga una palabra como clave, con una matriz de ID como valor si la palabra está en IndexedWords para el elemento.

Cree un objeto vacío y algunos datos de muestra

 let index = [{ Id: 1, IndexedWords: ['Foo', 'bar'] }, { Id: 2, IndexedWords: ['blue', 'cat', 'mouse'] }, {Id: 242, IndexedWords: ['salmon', 'blue', 'bar']} ]; let wordz = {};

Cree una matriz plana de todas las palabras únicas de los datos de muestra y elimine los duplicados de la matriz de todas las palabras para obtener una lista de palabras distintas.

 let allWords = index.map((z) => (z.IndexedWords)).flat() allWords = [...new Set(allWords)]

Itere sobre cada palabra única y cree un nuevo objeto con la palabra como clave, con una matriz de ID como valor

 allWords.forEach( (word) => { // create an empty array for the new wordz[word] wordz[word] = [] // push the item Id onto wordz[word] // index.forEach((item) => { if(item.IndexedWords.indexOf(word)>=0) { wordz[word].push(item.Id); } }) }) console.log(wordz) Foo: [1] bar: (2) [1, 242] blue: (2) [2, 242] cat: [2] mouse: [2] salmon: [242]
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda