如何使用javascript在for循环中查找特定的数组项

时间:2017-05-13 06:04:32

标签: javascript arrays

我需要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 }}

请帮忙解决这个问题!

2 个答案:

答案 0 :(得分:1)

试试这个。

  1. 您的if条件错误。更改为if(checkRange <=input)
  2. 因为checkrange总是小于input。只有它始终为零。
  3. 然后删除break语句。并将输出声明为array
  4. 然后将每个结果值推送到数组。最后使用pop()
  5. 获取最后一个值

    &#13;
    &#13;
    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;
    &#13;
    &#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; }