Javascript 如何根据三个用户选项为大量产品指定有限数量的价格?

Javascript 如何根据三个用户选项为大量产品指定有限数量的价格?,javascript,Javascript,我试图根据三个定制选项为大型产品选择分配数量有限的价格。我有一个1200种产品颜色(分为4类)、3种不同尺寸的产品和5种不同类型的产品的数据库。颜色(取决于它们所属的子类别)对价格有影响。这相当于16种不同的价格,必须根据用户的选择进行分配 我正在努力寻找一个好的解决方案。目前,我把每个价格都声明为变量,然后做一大堆if-else语句,但我觉得一定有更聪明的人能给我指出更好的方法 var 20luxpas = 2,179.74; var 20luxmed = 2,391.21; var 20ac

我试图根据三个定制选项为大型产品选择分配数量有限的价格。我有一个1200种产品颜色(分为4类)、3种不同尺寸的产品和5种不同类型的产品的数据库。颜色(取决于它们所属的子类别)对价格有影响。这相当于16种不同的价格,必须根据用户的选择进行分配

我正在努力寻找一个好的解决方案。目前,我把每个价格都声明为变量,然后做一大堆if-else语句,但我觉得一定有更聪明的人能给我指出更好的方法

var 20luxpas = 2,179.74;
var 20luxmed = 2,391.21;
var 20acrpas = 1,336.07;
var 20acrude = 1,805.64;
var 20acrmed = 1,384.05;
var 20acrdee = 1,546.22;
var 5ricpas = 632.28;
var 5ricmed = 606.74;
var 5peaude = 840.89;
var 5peapas = 681.59;
var 5peamed = 716.99;
var 5peadee = 761.16;
var 5gloude = 690.38;
var 5glopas = 548.80;
var 5glomed = 575.33;
var 5glodee = 619.57;

var selected = function (pricePicker) {
   if (selected == '5' (size), 'glo' (type), 'dee' (color))
       price = 5glodee;  
   } else if (selected == '5', 'pea', 'med') {
       price = 5peamed;
   } else if ........... etc

如果不喜欢If-else或switch,可以定义两个数组并使用
findIndex

解析文本后,您可以构建变量名并使用
[]
访问器从对象访问值

const字段=
{
尺寸:['size-1'、'size-2'、'size-3'],
颜色:['color-1'、'color-2'、'color-3'],
数字:['number-1','number-2','number-3']
};
常量文本=
{
大小:['s1','s2','s3'],
颜色:['c1','c2','c3'],
编号:['n1','n2','n3']
};
常量输入={
大小:'size-2',
颜色:“颜色-1”,
num:'number-3'
}
常量关键字=['size'、'color'、'num'];
常量输出=关键字.map(k=>{
常量idx=fields[k].findIndex(val=>val==input[k]);
如果(idx>-1){
返回文本[k][idx]
}否则{
//错误处理
}
})

console.log(output.join(“”))我非常确定javascript不支持以数字或千分隔符开头的变量。这应该由db管理。如果您使用的是任何数据库,请在那里添加另一个表/对象,并根据颜色和类别库获取它,但有点混乱-我有3个用户输入,即颜色、类型和大小。我假设在示例中s1/s2/s3是由大小输入定义的价格,但我需要从3个输入定义它?@LexRidley使用2D数组更新,我想你可能更喜欢这样的答案吧?谢谢看起来不错,只需要仔细看一下就可以完全理解它,它会在几小时内做出反应,所以我对你所说的“字段”和“文本”感到困惑。文本是价格吗?@LexRidley
fields
表示用户输入,
text
表示变量名的段,如“20”、“lux”和“med”。将这些段连接在一起可以得到完整的变量名,您可以通过obj[完整的变量名]访问价格。