压缩 Javascript 选项数组

Posted

技术标签:

【中文标题】压缩 Javascript 选项数组【英文标题】:Compress Javascript Options Array 【发布时间】: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,所以它最终会变成很多代码,我相信有办法减少它。

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

【问题讨论】:

似乎是从第一个到第二个的循环,并将它们作为字符串键/值铲入一个对象将是最简单的方法,尽管还有其他方法。很好奇你尝试过的东西不起作用。 【参考方案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))

【讨论】:

以上是关于压缩 Javascript 选项数组的主要内容,如果未能解决你的问题,请参考以下文章

js数组

将 PHP 转换为 JavaScript。将键/值存储到数组中

jQuery JavaScript Datatables 列压缩/挤压在一起

学习Javascript

如何在Javascript中从数组中提取值

前端基础之jquery