我需要amount
根据**"1000,2000,3000|100,200,300"**
找到具体的数组项目,例如..,(范围|数量)字符串输入金额< / p>
像..,
--Range-- = --Output--
0 to 1000 = 0<br />
1001 to 2000 = 100<br />
2001 to 3000 = 200<br />
3000 onwards = 300
我为此做了
var input = 3001; // (test inputs 1000,1500,2200)
var output=0;
var str = "1000,2000,3000|100,200,300";
var range = str.split('|')[0].split(',');
var amount = str.split('|')[1].split(',');
for(var i=0;i<range.length;i++){
var checkRange= parseInt(range[i]);
if(input<=checkRange){
output=i!=0?(amount[i-1]):0;
break;
}
}
console.log(output)
只有当input
介于0到最后一个数组项(range 0-3000, input is >=3000 )
之间时,此代码才能正常工作,但如果input amount(<3000)
大于最后一个数组项(范围),则返回{{1 }}
请帮忙解决这个问题!
答案 0 :(得分:1)
试试这个。
if(checkRange <=input)
checkrange
总是小于input
。只有它始终为零。array
。pop()
var input = 3001; // (test inputs 1000,1500,2200)
var output=[0];
var str = "1000,2000,3000|100,200,300";
var range = str.split('|')[0].split(',');
var amount = str.split('|')[1].split(',');
for(var i=0;i<range.length;i++){
var checkRange= parseInt(range[i]);
if(checkRange <=input){
output.push(amount[i])
}
}
console.log(output.pop())
&#13;
答案 1 :(得分:1)
您可以在检查值是否小于正确的范围值时使用迭代方法。
function getAmount(ranges, value) {
var data = string.split('|').map(function (a) { return a.split(',').map(Number); }),
index = 0;
data[0].every(function (a) { return a < value && ++index; });
return data[1][index - 1] || 0;
}
var string = "1000,2000,3000|100,200,300";
console.log(getAmount(string, 1)); // 0
console.log(getAmount(string, 999)); // 0
console.log(getAmount(string, 1000)); // 0
console.log(getAmount(string, 1001)); // 100
console.log(getAmount(string, 2000)); // 100
console.log(getAmount(string, 2001)); // 200
console.log(getAmount(string, 3000)); // 200
console.log(getAmount(string, 3001)); // 300
.as-console-wrapper { max-height: 100% !important; top: 0; }