Javascript 如何创建确定两个数字之间的值的函数
我有一系列的数字:Javascript 如何创建确定两个数字之间的值的函数,javascript,object,Javascript,Object,我有一系列的数字: 0 -------> 25 -------> 80 ------> 150 small medium large 我想接收一个介于0到150之间的数字,并显示它是小、中还是大。 30和45是中等的,因为它们介于25和80之间;5是小的,因为它们低于25 我想创建一个函数,该函数对此对象进行匹配: var sizeMap = { small : 25, medium : 80, large : 150 } (假设0是最小的
0 -------> 25 -------> 80 ------> 150
small medium large
我想接收一个介于0到150之间的数字,并显示它是小、中还是大。
30和45是中等的,因为它们介于25和80之间;5是小的,因为它们低于25
我想创建一个函数,该函数对此对象进行匹配:
var sizeMap = { small : 25, medium : 80, large : 150 }
(假设0是最小的数字)
该函数应该如下所示:
function returnSize(number) {
for (item in sizeMap)
???????
return size
}
如何编写此函数,以便灵活地添加新类别(例如:“超大”:250)。我应该将对象表示为数组吗?函数returnSize(number,sizeMap){
function returnSize(number, sizeMap) {
for (var key in sizeMap) {
if (number < sizeMap[key]) return key;
}
return key;
}
for(sizeMap中的var键){
if(number
只需返回满足“小于”条件的最大值:
function returnSize (number) {
var item;
for (item in sizeMap) {
if (number < sizeMap[item]) {
return item;
}
}
return item; // this will return largest size if it gets this far
}
函数返回大小(数字){
var项目;
用于(尺寸映射中的项目){
如果(编号
您应该使用一系列选项。由DESC订购
如果你需要遵守一个上限,你可以用你的第一个数字(最大的)来测试你的数字
当您的数字低于或等于类别上限时,您就知道他属于哪个类别。这里有一个解决方案:
RangeCheck = function(range) {
this.init(range);
};
RangeCheck.prototype = {
constructor: RangeCheck,
/**
* The range map.
*/
range: null,
init: function (range) {
this.range = range || {};
},
putRange: function(name, max) {
this.range[name] = max;
},
check: function(number) {
for (var key in this.range) {
if (this.range.hasOwnProperty(key)) {
if (number <= this.range[key]) {
return key;
}
}
}
return key;
}
};
JSFIDLE:要有一个数组,我更喜欢按所讨论的类别排序数组:
var categories = [
{label: 'small', upTo: 25},
{label: 'medium', upTo: 80},
{label: 'large', upTo: 150} ];
(您甚至可以从原始的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!");
}
函数getSizeCategory(编号、类别){
对于(变量i=0;iget_size = function (n) { return _.find(_.map({'small':100, 'big':200}, function (x,i) { return [x < n, i]; }), function (x) { return x[0] == false; })[1];};
get_size=函数(n){return}.find({'small':100,'big':200},函数(x,i){return[x
我被一种方式吸引住了,我没想到这种方式能这么容易做到——谢谢!:)当您为(y中的x)执行时
不能保证订单。在firefox中,它目前是按照指定的顺序进行的,因此使用以下2个将是大的:returnSize(20,{large:150,medium:80,small:25})代码>第92页(pdf格式104):“没有指定枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)。”我被一种方法吸引住了,我没有看到这种方法可以这么容易地完成-谢谢!)当您为(y中的x)执行时
不能保证订单。在firefox中,它目前是按照指定的顺序进行的,因此使用以下2个将是大的:returnSize(20,{large:150,medium:80,small:25})代码>第92页(pdf格式104):“未指定枚举属性的机制和顺序(第一个算法中的步骤6.a,第二个算法中的步骤7.a)。”这也解决了我在列表与数组方面遇到的问题-感谢对它的简化。。
get_size = function (n) { return _.find(_.map({'small':100, 'big':200}, function (x,i) { return [x < n, i]; }), function (x) { return x[0] == false; })[1];};