我有这个数字范围:
0 -------> 25 -------> 80 ------> 150
small medium large
Run Code Online (Sandbox Code Playgroud)
我想收到0到150之间的数字,并显示它是小,中还是大.30和45是中等的,因为它们在25到80之间,而5是小的,因为它低于25.
我想创建一个为此对象执行此匹配的函数:
var sizeMap = { small : 25, medium : 80, large : 150 }
Run Code Online (Sandbox Code Playgroud)
(假设0是最低的数字).
该函数应如下所示:
function returnSize(number) {
for (item in sizeMap)
???????
return size
}
Run Code Online (Sandbox Code Playgroud)
如何编写此函数,以便可以灵活地添加新类别(例如:'extra large':250).我应该将对象呈现为数组吗?
为了获得确定性的输出,我更喜欢有一个按相关类别排序的数组:
var categories = [
{label: 'small', upTo: 25},
{label: 'medium', upTo: 80},
{label: 'large', upTo: 150} ];
Run Code Online (Sandbox Code Playgroud)
(您甚至可以从原始数组创建这个数组sizeMap)
然后你可以这样做:
function getSizeCategory(number, categories) {
for (var i = 0; i < categories.length; ++i) {
if (number < categories[i].upTo) {
return categories[i].label;
}
}
throw new Error("not in range!");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |