Estoy trabajando en un pequeño proyecto de carrito de compras. Tengo productos en JSON.file, también tengo entrada para encontrar el precio de los productos. Estoy usando el método de clase. La pregunta es: ¿son cadenas o números? -> (3) ['35', '35', '35']
searchItem(data) { let that = this searchBtn.addEventListener('click', function(e) { const input = document.querySelector('.input').value const findItem = data.filter(function(item) { if(item.price === input) { return item } }) // this return all data of product so I filtered only prices bellow const getItem = findItem.map(item => { return item.price }) // this give: (3) ['35', '35', '35'] if(input === getItem) { console.log('same') } else { console.log('try it again') } // this cond. show me : console.log('try it again') // HOW TO GET: console.log('same') e.preventDefault() })Siempre puede ejecutar un typeof para averiguar con qué tipos de datos está tratando
por ejemplo
console.log(typeof getItem[0])también aquí :
if(input === getItem) { console.log('same') } else { console.log('try it again') } está comparando la variable de input con una matriz completa, debe especificar qué elemento de la matriz verificar como:
if(input === getItem[0]) { console.log('same') } else { console.log('try it again') }Una respuesta rápida y directa a su pregunta sin el análisis del código. Cualquier valor obtenido de su entrada es una cadena y no números.
Por lo tanto, si los valores del precio que obtiene de los datos son enteros, entonces deberá considerar analizar los valores de la entrada utilizando el método parseInt(). Ejemplo;
const findItem = data.filter(function(item) { if(item.price === parseInt(input)) { return item } })Otra cosa es que getItem es una matriz, por lo que la evaluación con un valor particular de la entrada está destinada a fallar. Por lo tanto, use getItem[0] en su lugar y dos "==" en lugar de "===" tal como se sugiere en el comentario.
function searchItem(data) { let that = this searchBtn.addEventListener('click', function(e) { const input = document.querySelector('.input').value const findItem = data.filter(function(item) { if(item.price == input) { return item } }) // this return all data of product so I filtered only prices bellow const getItem = findItem.map(item => { return item.price }) console.log(getItem); // this give: (3) ['35', '35', '35'] if(input == getItem[0]) { console.log('same') } else { console.log('try it again') } // this cond. show me : console.log('try it again') // HOW TO GET: console.log('same') e.preventDefault() }) }