所以我有一个用于检索会员费率的电子表格,列是年龄、持续时间和费率。您只需向下查看年龄列以找到客户的年龄,然后当您找到该年龄时,您继续向下查找以将其与正确的持续时间相匹配,然后在最后一列中将是费率。一个(非常)小的版本可能看起来像这样;
Age,Duration,Rate
18,10,1.33
18,11,1.5
18,12,1.8
19,10,1.4
19,11,1.65
19,12,1.88
20,10,1.48
20,11,1.73
20,12,1.98
Run Code Online (Sandbox Code Playgroud)
因此,年龄为 19 岁、持续时间为 11 的人的比率为 1.65。20 岁且持续时间为 12 的人的比率为 1.98 - 简单!
我的问题是两部分,我想把它转换成一个网页,在那里有人输入年龄和持续时间来检索费率。我很确定我最好的选择是像这样的二维数组;
var array = [[18,10,1.33],[18,11,1.5],[18,12,1.8] .. and so on];
Run Code Online (Sandbox Code Playgroud)
有没有更好的选择?
第二个问题是我如何最好地迭代二维数组(如果这最终是最好的解决方案)?正如我之前提到的,我需要能够根据两个条件搜索返回速率的迭代。我相信这将由两部分的迭代组成,但迭代对我来说是一个弱点,试图掌握循环中放置迭代的位置只是大脑融化。我认为它看起来像这样;
for (var i = 0; i < array.length; i++){
for (var j = 0; j < array[i].length; j++){
//Do something... I think something like this
If array[][j] == ageImLookingFor && array[][j+1] == durationImLookingFor
then return array[][j+2] (which is the rate)
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助、建议或想法,我将不胜感激
比使用数组更好的选择是使用具有Map与年龄和持续时间的有效组合相对应的属性(键)的对象(或),通过该键有效地索引您的数据:
var list = {
'18_10': { age: 18, duration: 10, rate: 1.33 }
'18_11': { age: 18, duration: 11, rate: 1.5 },
'18_12': { age: 18, duration: 11, rate: 1.8 },
// .. and so on
};
Run Code Online (Sandbox Code Playgroud)
这样你就不必遍历数组(参见你的问题#2),但是给定一个年龄和一个持续时间(假设在具有这些名称的变量中),你可以编写它来获取匹配项:
var item = list[age + '_' + duration];
Run Code Online (Sandbox Code Playgroud)
当然,您应该检查年龄和持续时间是否是有效的整数,并且当组合未知时该项目可能是undefined。
这是一个简单的片段(没有任何检查),您可以用来建立您的网络表单。它从具有数据的数组构建上述对象。
var list = {
'18_10': { age: 18, duration: 10, rate: 1.33 }
'18_11': { age: 18, duration: 11, rate: 1.5 },
'18_12': { age: 18, duration: 11, rate: 1.8 },
// .. and so on
};
Run Code Online (Sandbox Code Playgroud)
var item = list[age + '_' + duration];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3327 次 |
| 最近记录: |