【问题标题】:jquery json return data adding two numbersjquery json 返回数据相加两个数字
【发布时间】:2015-02-19 11:20:38
【问题描述】:

我正在使用 Jquery post 方法从 php 文件中获取数据,该文件返回一个多维数组,其中包含以下格式的产品 ID、名称和价格

[
    { product_id: 34, product_name: "Coca-Cola", price: 0.7 },
    { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 }
]

当我将这两个价格相加时,它不会加在一起会感染它们连接。 这就是我尝试添加它们的方式

$.each(data, function(i, result) {
    //total  = total + +result.price;
    //total += +result.price;
    //total += result.price;
    //total += +total + +result.price;
    //total = total * 1 + result.price;
});
$("#cart_total").empty();
$("#cart_total").append(output);

知道我应该怎么做才能做到这一点

问候

【问题讨论】:

  • 你想要什么总价?
  • 在你的$.each循环之前你必须初始化total=0它工作正常。

标签: javascript jquery arrays json addition


【解决方案1】:

试试这个...

var data = [
    { product_id: 34, product_name: "Coca-Cola", price: 0.7 },
    { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 }
];

var sum = 0;
data.forEach(function(i){ 
   sum =sum + +i.price;  
});
alert(sum);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

【讨论】:

    【解决方案2】:
    var data = [
        { product_id: 34, product_name: "Coca-Cola", price: 0.7 },
        { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 }
    ];
    

    添加

    var sum = 0;
    data.forEach(function(i){ 
       sum += +i.price;  
    });
    $("#cart_total").empty();
    $("#cart_total").append(sum);
    

    【讨论】:

      【解决方案3】:

      您必须在循环开始之前初始化total 变量,然后才能执行您的任务。

      total = 0;
      $.each(data, function(i, result) {
          total  = total + result.price;
      });
      alert(total);
      

      Demo

      【讨论】:

        【解决方案4】:

        用户解析函数:

        sum=parseInt(price)+parseInt(price);
        

        【讨论】:

          【解决方案5】:

          首先初始化total:total = 0; 然后:

          total += parseFloat(result.price);
          

          试试这个!

          【讨论】:

            【解决方案6】:

            试试这个:

            total = Number(total) + Number(total.price);
            

            发生连接是因为total 必须是一个字符串,即使它“包含”一个数字。换句话说:

            '1' === 1
            

            在 javascript 中表示 false

            我们正在做的是将total 字符串强制转换为数字:

            Number('1') === 1
            

            (true)

            【讨论】:

            • !=== 确定。
            【解决方案7】:
            var data = [
                { product_id: 34, product_name: "Coca-Cola", price: 0.7 },
                { product_id: 24, product_name: "Shredded Beef Steak Wrap", price: 2.99 }
            ];
            

            然后计算总和:

            var total =  0;
            $(data).each(function(index,item) {
                total += item.price;
            });
            total = parseFloat(total.toFixed(2))
            

            显示:

            $("#result").html(total);
            

            这里的工作示例:http://jsfiddle.net/9jpdLkp2/

            【讨论】:

            • 顺便说一句,你如何只显示小数点后两位?如果你能帮忙
            • total = parseFloat(total.toFixed(2)) ,添加到我的答案中
            【解决方案8】:

            试试这个

            var total =  0;
            $(data).each(function(index,item) {
                total += item.price;
            });
            total = parseFloat(total.toFixed(2));
            

            toFixed(2)是限制小数点后两位

            希望对你有帮助

            【讨论】:

              猜你喜欢
              • 2012-11-05
              • 1970-01-01
              • 2016-01-10
              • 2017-06-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-05-01
              • 1970-01-01
              相关资源
              最近更新 更多