La pregunta se divide en 2 partes.
1. Cómo estructurar los datos en la matriz json
2. Cómo calcular el precio de la matriz json
Necesito almacenar los datos de precios en línea en HTML como JSON, ya que las solicitudes de AJAX al servidor son demasiado lentas o pesadas.
Los datos se almacenan como cadenas serializadas en una base de datos. Esto se agrega a la base de datos desde las cargas de archivos CSV. Los archivos CSV se ven a continuación.
50 100 150 200 250 20 70 90 110 130 150 30 90 110 130 150 170 40 110 130 150 170 190 50 130 150 170 190 210 60 150 170 190 210 230 Si ingresa 100 de ancho y 40 de alto, el precio debería ser 130 .
Si ingresa 170 de ancho y 52 de alto, el precio debería ser 210 .
Si no se encuentra la columna o la fila, debe redondearse a la siguiente columna o fila.
¿Cuál es la mejor manera de almacenar esto como JSON en línea, si necesita calcular el precio en función del ancho y el alto?
¿Cómo calcularía el precio, según el width y la height de la entrada del usuario?
No estoy buscando un código específico, solo sugerencias sobre la estructura JSON y cómo calcular a partir de esto.
Puede tomar dos matrices para anchos y altos y una matriz 2D para los precios.
Para obtener un precio correcto, obtenga primero los índices y luego el precio.
Tal vez necesite agregar un poco de protección para los valores para evitar obtener índices incorrectos.
const getPrice = (width, height) => { const w = widths.findIndex(w => width <= w), h = heights.findIndex(h => height <= h); return prices[w][h]; }, widths = [50, 100, 150, 200, 250], heights = [20, 30, 40, 50, 60], prices = [[70, 90, 110, 130, 150], [90, 110, 130, 150, 170], [110, 130, 150, 170, 190], [130, 150, 170, 190, 210], [150, 170, 190, 210, 230]]; console.log(getPrice(100, 30)); console.log(getPrice(90, 25));Cuando hay un patrón regular para los pasos de ancho y alto, también puede hacer lo siguiente:
const h0=20,dh=10,w0=50,dw=50, prices= [[ 70, 90, 110, 130, 150], [ 90, 110, 130, 150, 170], [ 110, 130, 150, 170, 190], [ 130, 150, 170, 190, 210], [ 150, 170, 190, 210, 230]]; // w,h [[100,30],[90,25]].forEach(([w,h])=> console.log(prices[Math.ceil((h-h0)/dh)][Math.ceil((w-w0)/dw)]));