
当数组元素为字符串形式的数字(如 ["17.50"])时,直接使用 + 运算符会导致字符串拼接而非数值相加;需先用 parseFloat() 或 Number() 转换类型,再累加才能得到正确数值总和。
当数组元素为字符串形式的数字(如 ["17.50"])时,直接使用 `+` 运算符会导致字符串拼接而非数值相加;需先用 `parsefloat()` 或 `number()` 转换类型,再累加才能得到正确数值总和。
在 JavaScript 中,+ 运算符具有重载行为:当任一操作数为字符串时,整个表达式会执行字符串拼接(concatenation),而非数学加法。你遇到的输出 017.507.00 正是典型表现——初始 totalShipping = 0(数字),但第一次执行 0 + ["17.50"] 时,数组被隐式转为字符串 "17.50",结果变为字符串 "017.50";后续再加 ["7.00"],又拼接成 "017.507.00"。
根本解决方法是显式类型转换。由于你的 data.shipPrice[i] 是单元素数组(如 ["17.50"]),需先取值 data.shipPrice[i][0],再转换为数字:
totalShipping += parseFloat(data.shipPrice[i][0]); // ✅ 正确:提取字符串并解析为浮点数 // 或等价写法: // totalShipping += Number(data.shipPrice[i][0]); // totalShipping += +data.shipPrice[i][0]; // 一元加号强制转换
完整修正代码如下(含健壮性增强):
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
⚠️ 注意事项:
- 避免重复使用相同 id(如多次 id="ShippingFromJson"),应改用 class 或移除 id 属性,否则 HTML 不合法;
- parseFloat() 可安全处理带前导空格或货币符号的字符串(如 " 17.50"),但遇到 "17.50 USD" 仅解析出 17.50;若数据格式复杂,建议先正则清洗;
- 推荐使用 let/const 替代 var,避免变量提升与作用域问题;
- 对于现代项目,可考虑用 Array.prototype.reduce() 实现更函数式的求和:
const total = data.shipPrice .map(arr => parseFloat(arr[0])) .filter(n => !isNaN(n)) .reduce((sum, num) => sum + num, 0);
最终输出将正确显示 RM 24.50,实现预期的数值累加逻辑。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










