es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Qué método de cadena para coincidir cadenas específicas en Javascript?

Esto podría ser una pregunta duplicada simple pero no pude encontrar ninguna solución que resuelva mi caso a continuación. ¡Por favor ayúdeme! 🙂


Estoy buscando un método de cadena para verificar si el valor coincide con una cadena específica y devolver ese resultado.
* Estoy usando create-react-app y tengo un menú desplegable <select> para que los usuarios filtren los platos con un rango de precios específico.
* Este menú desplegable tiene 3 valores que son cadenas: “$“, “$$” y “$$$

Actualmente estoy usando el método .includes y no obtengo el resultado que quiero porque incluye todos los resultados que contienen un carácter de la cadena. (Si los usuarios eligen “$“, también devolverá los resultados que incluyen “$$” y “$$$“)

-> Solo quiero que devuelva los resultados con exactamente el valor de las cadenas anteriores.
Entonces, ¿qué debo usar en lugar de .includes ?

// Estados iniciales:    
const [foodList, setFoodList] = useState([])
const [foodName, setFoodName] = useState('')
const [isVegetarian, setIsVegetarian] = useState('')
const [priceRange, setPriceRange] = useState('$')

const [textSearch, setTextSearch] = useState('')
const [priceDropdown, setPriceDropdown] = useState('')
const [vegDropdown, setVegDropdown] = useState('')

// Search.js:
    const newSearch = props.foodList.filter((value) => {
            return (
              value.foodName.toLowerCase().includes(textSearch.toLowerCase()) &&
              // ¿Qué debo usar en lugar de .includes aquí?
              value.priceRange.toLowerCase().includes(priceDropdown.toLocaleLowerCase()) 
              && value.isVegetarian.includes(vegDropdown.toLowerCase())
            )
          }
      )

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes utilizar el operador === para comprobar si el valor de priceRange coincide con las cadenas específicas que deseas. Aquí tienes un fragmento de código actualizado:

    const newSearch = props.foodList.filter((value) => {
      return (
        value.foodName.toLowerCase().includes(textSearch.toLowerCase()) &&
        value.priceRange === priceDropdown &&
        value.isVegetarian.includes(vegDropdown.toLowerCase())
      )
    })
    

    Esto solo devolverá resultados donde la propiedad priceRange sea exactamente igual al valor en priceDropdown.

Comments are closed.