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

189
Visualizações
¿Cuál es la mejor forma (eficiente) de obtener un hash o clave única para un conjunto de propiedades y valores en JavaScript?

Quiero generar un nombre de clase de elemento DOM basado en los estilos definidos estáticamente que tiene (en mi marco). Básicamente, digamos que hay 10.000 elementos virtuales. Cada elemento virtual tiene 10 atributos de estilo CSS "estáticos", así como 5-10 atributos de estilo "dinámico". Por "estático" quiero decir que está codificado en un valor fijo que no cambia, y por dinámico quiero decir que el valor podría cambiar al estar vinculado al valor de alguna variable, por ejemplo.

Ahora, en términos de optimización/teoría, los atributos de estilo CSS estático no necesitan escribirse en el objeto de style de un elemento nativo (no virtual), sino que pueden agruparse y colocarse en una clase CSS. De esta manera podemos darle al elemento una clase y los estilos se aplican automáticamente. Pero los atributos de estilo CSS dinámico deben configurarse directamente en el elemento como el.style[name] = value .

Entonces, todo lo que tenemos que hacer para que esto suceda es tomar todos los atributos CSS definidos estáticamente y generar un nombre de clase único para ellos. Una forma ingenua de hacerlo es simplemente hacer esto:

 let hashId = 1 const stylesCache = {} console.log(generateHash({ color: 'red' })) console.log(generateHash({ color: 'red' })) console.log(generateHash({ color: 'blue', fontFamily: 'Arial' })) console.log(generateHash({ color: 'blue' })) function generateHash(staticStyleAttributes) { const array = [] Object.keys(staticStyleAttributes).sort().forEach(name => { const value = staticStyleAttributes[name] array.push(`${name}=${value}`) }) const string = array.join(';') const id = stylesCache[string] = stylesCache[string] || hashId++ return `myClassName-${id}` }

Pero no estoy seguro de que este sea el mejor uso del objeto como tabla hash, porque las cadenas de los atributos de estilo pueden ser bastante largas (más de 500 caracteres). ¿Hay alguna manera mejor de lograr esto? ¿Algo más elegante quizás? ¿O complicado pero eficiente?

¿Es posible tomar la string de estilo generada y ejecutar una función hash de algún tipo que sea eficiente y simple? Entonces, ¿da valores únicos según la entrada y también es rápido? No necesita ser seguro.

Al usar una función hash, también, no necesitaríamos almacenar potencialmente cientos de cadenas de claves largas en una tabla hash, solo se calcularía sobre la marcha. Así que también escatimamos un poco en la memoria.

about 4 years ago · Juan Pablo Isaza
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