javascript - jQuery-根据多个条件计算百分比

标签 javascript jquery arrays json math

我有以下代码:

   <script type="application/javascript"> 

    $(document).ready(function () {

        $("#market_value").on("change paste keyup", function() {
            
          var market_value = parseInt($(this).val());
            
          var data = [
          {"percent":"10","market_value":"10000"},
          {"percent":"20","market_value":"10001"},
          {"percent":"25","market_value":"20000"}
          ];
      
          for (var x in data) {
          
           if(market_value >= parseInt(data[x].market_value)) {
      
           console.log(percentage(market_value, data[x].percent));
           
           }
        
       };
           
        });
        
    function percentage(num, per)
    {
      return (num/100)*per;
    }
        
        
    });
    
    </script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>



<input type="text" class="form-control" id="market_value" name="market_value" value="">

我只需要一个简单的代码即可根据JSON数据列表计算market_value的百分比。
例如:
如果输入8000,则结果必须为800(基于“百分比”字段的10%)。
如果我输入11000,则结果必须为2200(基于“百分比”字段的20%,因为它高于10001)
如果我键入50000,则结果必须为12500(基于“百分比”字段的25%,因为该值高于20000)
如果我输入3000,结果必须为300(基于“百分比”字段的10%,因为它不超过10000)
我编写的代码以某种方式起作用,但是如果输入的数字小于10000,则无任何显示。
这些不是固定值,数据(JSON)是动态的。

最佳答案

正如@ Andreas @和@ John @正确指出的那样,循环将结束而无需执行任何操作:

for (var x in data) {
    if(market_value >= parseInt(data[x].market_value)) {    // never happens for <10000
    console.log(percentage(market_value, data[x].percent));
}
为什么?
假设我们给market_value = 5555
现在,随着for的发展,您将进行以下比较:
if( 5555 >= 10000 ) { ... }
if( 5555 >= 10001 ) { ... }
if( 5555 >= 10002 ) { ... }
所有这些条件将为您提供false。这是问题的核心。
修复建议
  • 您引入的第四个条件的下限较低(例如零)
  • 或在for循环后管理“以上皆非”的情况。
  • 关于javascript - jQuery-根据多个条件计算百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62966706/

    相关文章:

    javascript - Ajax 调用不适用于公共(public) Dog API

    jquery - CSS/jQuery - 显示 : none based on browser size

    Javascript - 动态展开/折叠全部

    Ruby 多数组比较

    php:将数组与 mysql 结果合并并按数组键对它们进行排序

    javascript - 动画搜索框

    javascript - 当我点击 html5 中的图像时,播放视频时控件不起作用?

    javascript - 结合两个ajax函数?

    jquery - Jquery 数据表 1.10.10 中表行的延迟加载?

    java - 字节数组到位图不显示Java Android