Así que aquí tengo un código JS para obtener un valor singular o, si hay un 'rango' de precios separados por '-', obtener el valor más alto :
function getPrice() { var str = ("£25 - £36"); var val; if (str.indexOf('-') > -1) { val = Number(str.replace(/[^0-9.-]+/g, "").split('-')[1], 10); } else { val = Number(str.replace(/[^0-9.-]+/g, "").split('-')[0], 10); } return val; }¿Cómo modificaría esto para que obtenga el valor más bajo?
Este 'rango' siempre tendrá el formato de £25 o £13 - £72 y siempre estará en libras. El valor más alto siempre será el último; en este contexto son funcionalmente lo mismo.
Una forma de lograr lo que necesita sería usar Regex para extraer todas las cifras de la cadena. Luego puede aplicar esas coincidencias a Math.min para encontrar la más baja.
El beneficio de este enfoque es que recuperará el número más bajo independientemente de su posición en la cadena.
function getLowestPrice(input) { let amounts = input.match(/\d{1,3}(,\d{3})*(\.\d+)?/g); amounts = amounts.map(v => v.replace(',', '')); // remove comma grouping return Math.min.apply(this, amounts); } console.log(getLowestPrice('£25 - £36')); // = 25 console.log(getLowestPrice('£1,090.99 - £77.25')); // = 77.25Editar : acabo de expandir Regex para manejar valores que contienen miles de agrupaciones y decimales, crédito a esta respuesta por eso.