You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对数组中字符串类型的数值求和?JS代码求和异常求助

问题解决方法

你的求和结果出现字符串拼接的原因有两个:

  • shipPrice的每个元素是嵌套数组,直接取data.shipPrice[i]拿到的是数组而非数字字符串
  • 即使拿到数字字符串,直接和数值相加会触发字符串拼接,而非数学加法

修正后的代码

const data = {
  countTotal: 2,
  shipPrice: [
    ["17.50"],
    ["7.00"]
  ],
  shippingFrom: ["SARAWAK", "KUALA LUMPUR"]
}
var totalShipping = 0;
for (var i = 0; i < data.countTotal; i++) {
  // 取出嵌套数组里的价格字符串,转成浮点数
  const price = parseFloat(data.shipPrice[i][0]);
  // 用class代替重复id,避免DOM id冲突
  $("#ShippingFromJson").append('<li class="shipping-item">' + data.shippingFrom[i] + '<span class="shipping-price">RM ' + price + '</span></li>');
  // 累加数值类型的价格
  totalShipping += price;
}
// 用toFixed保留小数位数,确保结果格式符合预期
$("#isTotal").html(totalShipping.toFixed(1));

对应的HTML(修正id重复问题)

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<ul id="ShippingFromJson"></ul>
<span id="isTotal"></span>

关键修正点

  • 取价格时要访问嵌套数组的第一个元素:data.shipPrice[i][0]
  • 用parseFloat()将字符串转换成浮点数值,再进行加法运算
  • 移除循环中重复的id(同一个页面id必须唯一),改用class标识元素
  • 可选:用toFixed(1)确保结果保留一位小数,和预期的24.5格式一致

内容的提问来源于stack exchange,提问作者oos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 19:01:15