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

184
Vistas
js dinámica regular expr

hola, estoy codificando una tienda en línea, actualmente estoy trabajando en la funcionalidad de agregar al carrito, como almacenar identificaciones de productos y su cantidad en una cookie como esta id1: qt1, id2: qt2 ... como para verificar si un producto ya está en el carrito , parece que mi expr normal no funciona

 const reg = new RegExp(`${product_id}:\d+`); if (!reg.test(cart_cookie)){ const values = cart_cookie.split(','); values.push(`${product_id}:1`); setCookie('cart', values.join(','), 7); } else { console.log('already in cart.') }
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

puede usar solo el método de matriz en lugar de eso, no necesita expresiones regulares para eso, por ejemplo ...

 const values = cart_cookie.split(','); values.foreach(value => { if(value != product_id){ values.push(`${product_id}:1`); setCookie('cart', values.join(','), 7); } });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Sí, tu expresión regular está desactivada :)

Me dejó perplejo por un segundo, pero queda claro cuando verificas lo que tu cadena "regex" realmente evalúa: /product_id:d+/ . Esto se debe a que la cadena que está pasando ve \d como una d literal. Para solucionar esto, simplemente agregue otro \ allí para que el \ original sea lo que se está escapando. Antes, hacías coincidir cosas como "apple:ddddddd" .

Una vez que haces eso, tu código SÍ parece funcionar, pero ¿tal vez no es como esperabas? Puse su código en una función, ya que, presumiblemente, llamaría a esto cada vez que desea agregar un artículo al carrito, y agregué una instrucción console.log para mostrar el valor final de la "cookie. "

 // Just as a stand in for actual values let cart_cookie = 'apples:2,oranges:3,bananas:1'; function addCartItem(product_id) { const reg = new RegExp(`${product_id}:\\d+`); console.log(reg) if (!reg.test(cart_cookie)){ const values = cart_cookie.split(','); values.push(`${product_id}:1`); console.log('cart_cookie is now ', values.join(',')); setCookie('cart', values.join(','), 7); } else { console.log('already in cart.') } } addCartItem('apples'); // already in cart. addCartItem('kiwis'); // cart_cookie is now apples:2,oranges:3,bananas:1,kiwis:1

¡Está arreglado! 🥳 Pero... No estoy muy seguro de cómo se ven las identificaciones de sus productos, pero si contienen caracteres especiales (por ejemplo, puntos, signos de interrogación, etc.) causarán algunos problemas con el rendimiento de su expresión regular. Dudo que tenga cosas como signos de interrogación, pero algo como esto ilustra mi punto:

 let cart_cookie = '123.15:3,2.5.141:1'; /* ... */ addCartItem('1.3.15'); // already in cart.

Lo sé, es un escenario bastante improbable, y es posible que ni siquiera se aplique a usted si sabe que las identificaciones de sus productos no contendrán nada engañoso, pero si su objetivo es crear una tienda en línea, probablemente querrá para cubrir todas sus bases. Incluso solucionando eso, esto todavía tiene un problema potencial, ya que esto solo le permitirá agregar una cantidad de 1 a un artículo que aún no está en el carrito, sin posibilidad de incrementarlo después de eso. No estoy seguro si eso es lo que estás buscando.

Esto se desvía de la pregunta principal que planteó, pero una solución potencialmente mejor podría ser usar el almacenamiento local del navegador (o almacenamiento de sesiones) para realizar un seguimiento del carrito. Esto le permitiría usar estructuras de datos más familiares para almacenar esta información, en lugar de una cadena que tiene que rezar para analizar correctamente. Más información sobre eso aquí: https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

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