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

JavaScript数组处理:如何正确拼接金额字符串且无末尾加号

解决商品价格字符串拼接问题

先给你最简洁的解法:用map把每个商品转换为带$的价格字符串,再用join('+')拼接,直接避免末尾多余的+:

const input = [{id: 1, amount: 20}, {id: 2, amount: 40}, {id: 3, amount: 90}]

const output = input?.map(item => `$${item.amount}`).join('+')

console.log(output) // 输出 "$20+$40+$90"

如果一定要用reduce实现,有两种可行思路:

  • 思路一:在reduce中判断当前元素是否为最后一个,仅对非最后一个元素追加+:
const output = input?.reduce((acc, curr, index, arr) => {
  acc += `$${curr.amount}`;
  // 不是最后一项才加分隔符
  if (index !== arr.length - 1) {
    acc += '+';
  }
  return acc;
}, '')
  • 思路二:先拼接所有带+的字符串,再移除最后一个+(注意判断数组为空的情况,避免slice报错):
const output = input?.length 
  ? input.reduce((acc, curr) => acc + `$${curr.amount}+`, '').slice(0, -1)
  : ''

关于你说运行原代码得到金额总和$150的问题:按你贴出的代码来看,初始值是空字符串,应该是字符串拼接而非数字相加。大概率是你实际运行的代码和贴出的不一致——比如把初始值写成了0,或者拼接时漏了模板字符串符号,直接累加curr.amount导致数字相加,你可以检查下代码的初始值和拼接逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:33:59