压缩 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))
我继承了一个网站,正在尝试压缩一些写得不好的脚本。一个特定的部分根据其他 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))