我尝试根据三个自定义选项将有限数量的价格分配给大量产品选择。我有一个包含 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 fields =
{
size: ['size-1','size-2','size-3'],
color: ['color-1','color-2','color-3'],
num: ['number-1','number-2','number-3']
};
const texts =
{
size: ['s1','s2','s3'],
color: ['c1','c2','c3'],
num: ['n1','n2','n3']
};
const input = {
size: 'size-2',
color: 'color-1',
num: 'number-3'
}
const keyWords = ['size','color','num'];
const output = keyWords.map(k => {
const idx = fields[k].findIndex(val => val === input[k]);
if (idx > -1) {
return texts[k][idx]
} else {
// error handling
}
})
console.log(output.join(''));
关于javascript - 如何根据三个用户选项为大量产品分配有限的价格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51380611/