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

257
Vistas
Javascript Loop which includes variables

I wrote this Javascript code.

function updateCost(plotcode) {
    if (plotcode == "KKPP") {
        alert("Fully Invalid!!!");
        KKPP();
    } else if (plotcode == 1) {
        var pValue = parseInt(localStorage.plot1);
        var opValue = 2 * pValue;
        var mval = 760;
        if (opValue >= mval) {
            var opValue = mval;
        }
        var k = (localStorage.plot1 = opValue - 10);
    } else if (plotcode == 2) {
        var pValue = parseInt(localStorage.plot2);
        var opValue = 2 * pValue;
        var mval = 760;
        if (opValue >= mval) {
            var opValue = mval;
        }
        var k = (localStorage.plot2 = opValue - 10);
    } else if (plotcode == 3) {
        var pValue = parseInt(localStorage.plot3);
        var opValue = 2 * pValue;
        var mval = 820;
        if (opValue >= mval) {
            var opValue = mval;
        }
        var k = (localStorage.plot3 = opValue - 20);
    } else {
        alert("Invalid Plot Code");
        KKPP();
    }

    alert("Rent of Plot " + plotcode + " is updated to " + k);
    addtoHistory("Plot " + plotcode, "Rent Updated to " + k);
}

This code is very long.

As you can see the code is repeating in this format

} else if (plotcode == 7) {
    var pValue = parseInt(localStorage.plot7);
    var opValue = 2 * pValue;
    var mval = 940;
    if (opValue >= mval) {
        var opValue = mval;
    }
    var k = (localStorage.plot7 = opValue - 40);

again and again

How can I put this inside a loop, or is there anything else that I can do to make this short?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Hmmm, I suggest you to store the valid plotcodes and their data in an array. You need some hardcoded values.

conts PLOTCODE_DATAS = [{plotcode: 1, mval: 760, substrahend: 10 }, ...];

Now you can easily use find or a for loop.

  • With find
function updateCost(plotcode) {
    if (plotcode == "KKPP") {
        alert("Fully Invalid!!!");
        KKPP();
        return;
    } 
    const plotcodeData = PLOTCODE_DATAS.find(d => d.plotcode === plotcode);
    if(!plotcodeData) {
        alert("Invalid Plot Code");
        KKPP();    
    }
    const pValue = parseInt(localStorage["plot" + plotcode]);
    let opValue = 2 * pValue;
    if (opValue >= plotcodeData.mval) {
        opValue = plotcodeData.mval;
    }
    const k = (localStorage["plot" + plotcode]= opValue - plotcodeData.substrahend);

    alert("Rent of Plot " + plotcode + " is updated to " + k);
    addtoHistory("Plot " + plotcode, "Rent Updated to " + k);
}
  • With for loop
function updateCost(plotcode) {
    if (plotcode == "KKPP") {
        alert("Fully Invalid!!!");
        KKPP();
        return;
    }
    for(let plotcodeData of PLOTCODE_DATAS) {
        if(plotcodeData.plotcode === plotcode) {
            const pValue = parseInt(localStorage["plot" + plotcode]);
            let opValue = 2 * pValue;
            if (opValue >= plotcodeData.mval) {
                opValue = plotcodeData.mval;
            }
            const k = (localStorage["plot" + plotcode]= opValue - plotcodeData.substrahend);

            alert("Rent of Plot " + plotcode + " is updated to " + k);
            addtoHistory("Plot " + plotcode, "Rent Updated to " + k);
            return;
        }
    }
    alert("Invalid Plot Code");
    KKPP();  
}

Your data can look even like this:

  • With map
conts PLOTCODE_DATAS = new Map([[1, {mval: 760, substrahend: 10}], ...]);
...
const plotcodeData = PLOTCODE_DATAS.get(plotcode);
  • With unreadable minimaml
conts PLOTCODE_DATAS = [[1, 760, 10], ...]);
...
const plotcodeData =  PLOTCODE_DATAS.find(d => d[0] === plotcode);
// OR
for(let plotcodeData of PLOTCODE_DATAS) {
   if(plotcodeData[0] === plotcode) { ...

But I don't recommend thit one.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Try it like this:

function cost(i, mval){
    var pValue = parseInt(localStorage["plot" + i]);
    var opValue = 2 * pValue;
    if (opValue >= mval) {
        var opValue = mval;
    }
    var k = (localStorage["plot" + i] = opValue - 20);
}
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