将数据表存储在JavaScript变量中

Ric*_*ket 1 javascript

我正在制作一个特殊的"计算器",它接受用户输入并在表格中查找数据以查找结果.但我在如何最好地做到这一点上遇到麻烦,以避免大量的if语句.

例如,假设有一些单选按钮组,每个按钮组合都有一个唯一的值,我想向用户显示.我会在JavaScript中使用哪种数据结构来计算每个按钮组合并查找相应的值?


编辑:根据要求,这里有一些示例数据:

| Type  | Color  | Output value |
| small | red    | 21.9         |
| small | blue   | 27.3         |
| small | yellow | 26.8         |
| large | red    | 19.2         |
...
Run Code Online (Sandbox Code Playgroud)

然后向用户呈现两个无线电设备或下拉,一个用于类型,一个用于颜色.选择组合并按下按钮后,将显示输出值.

在我的具体情况下,我有一个包含4个不同列和许多组合的表.它看起来像一个数组,但如果它是一个对象数组,那么我必须在每一行上键入列名(即:){type: 'small', color: 'red', output: 21.9}, ...- 有没有办法保持对象的关联性质与紧凑的数组语法,如['small','red',21.9]

Dav*_*ang 5

像这样的东西?

var table = [
   ["High", 1, 2, 1, 0],
   ["Medium", 0, 1, 3, 2],
   ...
]
Run Code Online (Sandbox Code Playgroud)

每个数组中的第一个元素是"计算器"的结果; 后续的代表每组单选按钮的选定索引(尽管它们也可以是单选按钮的值).

所以说用户选择这些单选按钮:

var selection = [0, 1, 3, 2];
Run Code Online (Sandbox Code Playgroud)

然后迭代遍历table,切片每个"行"以排除第一个元素,并进行数组比较selection:

for (var i = 0, row; row = table[i]; i++) {
    var sRow = row.slice(1);
    // Array compare sRow and selection (function arrayEqual not included)
    if (arrayEqual(sRow, selection)) {
        return row[0];
    }
}

// Will return "Medium"
Run Code Online (Sandbox Code Playgroud)

更新:使用海报的示例数据,表格如下所示:

var table = [
   [21.9, "small", "red"],
   [27.3, "small", "blue"],
   ...
]
Run Code Online (Sandbox Code Playgroud)