javascript检查数字是否在来自对象的两个数字之间

时间:2018-04-05 04:37:02

标签: javascript object

我需要编写一个接受数字的方法,例如120,如何检查120以下对象到我可以返回键的位置" section1"因为120是100到200之间的对象,另一个例子267将返回" section2"。

var obj = {
  'section1': 100,
  'section2': 200,
  'section3': 300
}
如果有帮助的话,Lodash可以提供给我。提前谢谢。

4 个答案:

答案 0 :(得分:0)

您可以使用findKey功能。首先确定sectionValue并根据值,使用findKey函数获取密钥。

var obj = {
  'section1': 100,
  'section2': 200,
  'section3': 300
}
var sectionValue;
if (test_number < 200)
    sectionValue = 100;
else if  (test_number < 300)   
    sectionValue = 200;
else  //have default else here
    sectionValue = 300
}

var key1 = _.findKey(obj,  sectionValue);

答案 1 :(得分:0)

var value = 120;
var array = [100, 200, 300];

for (var i=0; i<array.length; i++) {
    if(value >= array[i]){
        if(value < array[i+1]){
            console.log('Found it between ' + array[i] + ' and ' + array[i+1]);
        }
    }
}

这是运行后的结果:

"Found it between 100 and 200"

我给你一个简单的答案,因为你问一个没有规则的简单问题,所以,明白这个

  1. 你不会从索引中得到一个&#34;数组&#34;或者&#34;阵列越界&#34;错误原因这是Javascript,但要明白,只要您没有给出大于数组最大值的值,就可以使用它。您可以轻松修复和验证。

  2. 此逻辑仅适用于您提供订购数组的方案。

  3. 祝你好运!

答案 2 :(得分:0)

您可以尝试此代码

&#13;
&#13;
var obj = {
    'section1': 100,
    'section2': 200,
    'section3': 300
}

var BreakException = {};
function GetSection(number) {
    var lastKey = "not match";
    try {
        Object.keys(obj).forEach(function (key) {
            if (obj[key] > number) {
                //console.log(lastKey);
               // return lastKey;
                throw BreakException;
            }
            else {
                lastKey = key;
            }
        })
    } catch (e) {
        if (e == BreakException) return lastKey;;
    }
    return "not match";
}

console.log(GetSection(120));
console.log(GetSection(267));
console.log(GetSection(10));
console.log(GetSection(500));
&#13;
&#13;
&#13;

答案 3 :(得分:0)

这是一种逻辑,在类似的情况下,我需要根据请求的数量和该数量的价格规则对定价进行检查。

        price_rules.forEach((element, index, rules) => {
            if(index >= 0 && (index < rules.length-1)){
                next_item = rules[index+1];
            }
            if((qty >= element.min && qty <= next_item.min) || (qty >= element.min && !next_item)){
                updateDisplayedPrice(element.price);
            }
        })