【问题标题】:How to change variable values in an array of variables in JS如何在JS中更改变量数组中的变量值
【发布时间】:2021-06-29 16:54:52
【问题描述】:

不确定这是否可能,所以我会快速尝试一下,看看是否有人有任何解决方案,咳咳。 有什么办法可以将这些变量存储到一个数组中,然后通过数组改变它们;

function themepreviewchange() {pretaskbartxt=curcolsch[0];pretaskbartxtprs=curcolsch[1];preactivetitle=curcolsch[2];preinactivetitle=curcolsch[3];pretbgradinactive1=curcolsch[4];
   pretbgradinactive2=curcolsch[5];pretbgradactive1=curcolsch[6];pretbgradactive2=curcolsch[7];cpwhite=curcolsch[8];cplightg=curcolsch[9];cpsilver=curcolsch[10];cpmidgray=curcolsch[11];
   cpgray=curcolsch[12];cpblack=curcolsch[13];cpblue=curcolsch[14];cpprussian=curcolsch[15];cpwincyan=curcolsch[16];cpyellow=curcolsch[17];cpfont=curcolsch[18];cphover=curcolsch[19];
   cpatext=curcolsch[20];preinvert=curcolsch[21];shuffleflop=curcolsch[22];discheckinv=curcolsch[23];enacheckinv=curcolsch[24];invcheckinv=curcolsch[25];prespritesheet=github+curcolsch[26];
   cwpp=curcolsch[27]}
var settings = pretaskbartxt,pretaskbartxtprs,preactivetitle,preinactivetitle,pretbgradinactive1,pretbgradinactive2,pretbgradactive1,pretbgradactive2,cpwhite,cplightg,cpsilver,cpmidgray,
   cpgray,cpblack,cpblue,cpprussian,cpwincyan,cpyellow,cpfont,cphover,cpatext,preinvert,shuffleflop,discheckinv,enacheckinv,invcheckinv,prespritesheet,cwpp,currentcolour

然后只做一个 for 循环?

for(var i=0; i<curcolsch.length; i++){settings[i]=curcolsch[i]}

当前结果只是最终改变了数组中该数字的值,并将其更改为与 curcolsch 数组中的当前位置相同的值。所以我的问题是;我将如何使用更快的路线,而不是像上面提到的那样在数组中向上一步发送相同的变量集?

需要明确的是,我对变量计数问题并没有完全发疯,我问的全部原因是我可以摆脱它们。

【问题讨论】:

  • 这么多独立变量是真正的代码异味 IMO,它会导致这样的问题。如果我是你,我会完全忽略它们,只使用 curcolsch(可能将其转换为对象而不是数组)
  • 只是要明确一点,我对变量计数问题并没有完全发疯,我要问的全部原因是我可以摆脱它们并用数组替换而不是依赖单独的变量.
  • 就像我说的,放弃数组并使用单个对象似乎可行。
  • 如果我对对象有所了解的话。

标签: javascript jquery arrays variables


【解决方案1】:

希望这不是你的家庭作业......

let settings = {
   pretaskbartxt: curcolsch[0],
   pretaskbartxtprs: curcolsch[1],
   ...
  cwpp: curcolsch[27],
};

for (const aThing in settings) {
   console.log(`value of ${aThing} is ${settings[aThing]}`);
}

应该给你基本的想法....

【讨论】:

    【解决方案2】:

    我希望得到一个快速直接的答案,而无需重写我的一半代码,所以我刚刚删除了所有变量以替换单个数组,这样我可以更轻松地切换,它更紧凑 + 更好比任何其他解决方案。

    var preactive = [undefined,undefined,'--preactivetitle','--preinactivetitle',undefined,undefined,
       undefined,undefined,'--prewhite','--prelightg','--presilver','--premidgray','--preblack',
       '--preblue','--preprussian',undefined,'--preyellow','--prefont','--prehover',undefined,
       '--preinvert']
    function themepreviewchange() { precolsch = undefined; precolsch = schemes[themecurrent]
       for(var i = 0; i<preactive.length; i++){docelem.style.setProperty(preactive[i], precolsch[i])}
       gradient = "linear-gradient(90deg, " + precolsch[4] + "," + precolsch[5] + ")";
    

    【讨论】:

      猜你喜欢
      • 2013-06-28
      • 2013-05-08
      • 2019-10-23
      • 1970-01-01
      • 2016-08-29
      • 2023-02-23
      • 1970-01-01
      • 2017-09-04
      • 2016-10-22
      相关资源
      最近更新 更多