压缩 Javascript 选项数组

Compress Javascript Options Array

我继承了一个网站,正在尝试压缩一些写得不好的脚本。一个特定的部分根据其他 select 离子更新 select 字段中的选项。它从另外两个 select 字段中获取数值,以更新第三个字段上的可能选项数。

这里是有问题的代码:

    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 所以它最终变成了很多代码,我相信有一种方法可以减少它。

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

这是一种快速简便的方法。通过将迭代器 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)

是这样的吗?

   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))