【问题标题】:Compress Javascript Options Array压缩 Javascript 选项数组
【发布时间】:2022-01-13 19:21:04
【问题描述】:

我继承了一个网站并试图压缩一些写得很糟糕的脚本。一个特定部分会根据其他选择更新选择字段中的选项。它从其他两个选择字段中获取数值,以更新第三个字段上可能选项的数量。

这里是有问题的代码:

    var value = parseInt(first_value) + parseInt(second_value);
    if(value == 1){
        var newOptions = {"0": "0", "1": "1",};
    } else if(value == 2){
        var newOptions = {"0": "0", "1": "1", "2": "2",};
    } else if(value == 3){
        var newOptions = {"0": "0", "1": "1", "2": "2", "3": "3",};
    } else if(value == 4){
        var newOptions = {"0": "0", "1": "1", "2": "2", "3": "3",  "4": "4",};
    } else if(value == 5){
        var newOptions = {"0": "0", "1": "1", "2": "2", "3": "3",  "4": "4", "5": "5",};
    }

这样一直持续到 value == 30,所以它最终会变成很多代码,我相信有办法减少它。

我自己尝试了一些完全失败的解决方案,所以我想转向社区看看是否有人有任何想法?

【问题讨论】:

  • 似乎是从第一个到第二个的循环,并将它们作为字符串键/值铲入一个对象将是最简单的方法,尽管还有其他方法。很好奇你尝试过的东西不起作用。

标签: javascript jquery reduce


【解决方案1】:

这是一种快速简便的方法。通过将迭代器x 设置为-1,我们可以在while 循环中使用++x。显式 Number 强制转换 (+val) 可能有点矫枉过正,但如果 val 的值来自输入或其他 HTML 元素,则很方便

const getOptions = val => {
  let base = {}, x = -1;
  while (++x <= +val) base[x] = x.toString();
  return base
}

newOptions = getOptions(5);
console.log(newOptions)

【讨论】:

    【解决方案2】:

    这样的?

       const foo =(value) => {
        let newOptions={0:'0'}
        for (let i = 1; i < value+1; i++) newOptions[i]=i.toString()   
        return newOptions
       }
    
       console.log(foo(30))

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-05
      • 2010-11-25
      • 1970-01-01
      • 2013-09-19
      • 2013-05-26
      • 1970-01-01
      • 2010-11-27
      • 1970-01-01
      相关资源
      最近更新 更多