javascript - 如何根据三个用户选项为大量产品分配有限的价格?

标签 javascript

我尝试根据三个自定义选项将有限数量的价格分配给大量产品选择。我有一个包含 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/

相关文章:

javascript - 插画填充颜色对象

javascript - 由 amplify 生成的 Graphql 查询运行良好,但由于身份验证规则而引发错误。为什么?

javascript - 将数据从 Rails Controller 传递到 React 组件

Javascript 检测上下文菜单何时关闭

javascript - 回调为 num_rows 并在语句满足时中断

javascript - 如何使 form.submit 在 Javascript 引用中分隔发布数据的名称和值

javascript - 如何使用其他数组中的数据删除数组项

javascript - 使用 jQuery 动态插入 MathML

c# - 如何使用 webclient 在 C# 中下载图像并使用 Javascript 从 aspx 页面获取图像

java - AngularJS 抛出错误根路径