我需要编写一个接受数字的方法,例如120,如何检查120以下对象到我可以返回键的位置" section1"因为120是100到200之间的对象,另一个例子267将返回" section2"。
var obj = {
'section1': 100,
'section2': 200,
'section3': 300
}
如果有帮助的话,Lodash可以提供给我。提前谢谢。
答案 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"
我给你一个简单的答案,因为你问一个没有规则的简单问题,所以,明白这个:
你不会从索引中得到一个&#34;数组&#34;或者&#34;阵列越界&#34;错误原因这是Javascript,但要明白,只要您没有给出大于数组最大值的值,就可以使用它。您可以轻松修复和验证。
此逻辑仅适用于您提供订购数组的方案。
答案 2 :(得分:0)
您可以尝试此代码
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;
答案 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);
}
})