簡體   English   中英

如何使用JavaScript在for循環中查找特定的數組項

[英]How to find specific array item inside for loop using javascript

我需要找到從特定數組項amount根據**"1000,2000,3000|100,200,300"**例如..,(范圍|量) 輸入量串

喜歡..,

--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)大於最后一個數組項(范圍),則返回0

請幫助解決這些問題!

嘗試這個 。

  1. 您的if條件錯誤。用if(checkRange <=input)
  2. 因為checkrange總是checkrange input它總是零。
  3. 然后刪除break語句,並將輸出聲明為array
  4. 然后將每個結果值推送到數組。最后使用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()) 

您可以在檢查值是否小於正確范圍值時使用迭代方法。

 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; } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM