JS替换数组字符串单引号无效 如何正确格式化目标数组元素
问题原因
你的代码没有生效,核心是两个认知偏差:
- 定义数组时包裹内容的单引号是JavaScript的字符串语法边界符,作用是标记包裹的内容为字符串类型,这对单引号根本不是字符串实际存储的内容,所以你用正则匹配单引号替换时,找不到任何匹配项,数组自然不会有变化。
- 你需要的处理从来不是“删除单引号”,而是把每个字符串中带小数位的数字段转成整数,再重组为目标格式。
正确实现
直接用数组map遍历处理每个元素即可:先按*把字符串拆成单独的数字段,每个段截断小数取整,再按需求拼接或者计算。
如果你的目标是保留*分隔的格式(和你给出的示例结构一致),代码如下:
const impuestos = [ '32350.0*51355000*9999', '6604.5*23680102*9999', '14500.0*23680202*9999' ] const result = impuestos.map(str => { return str.split('*') .map(seg => parseInt(seg, 10)) // 直接截断小数部分,和你示例的输出完全匹配 .join('*') }) console.log(result) // 运行输出:[ '32350*51355000*9999', '6604*23680102*9999', '14500*23680202*9999' ]
如果你实际需要的是每个乘法表达式计算后的最终数值,把拼接步骤换成归并求乘积即可:
const result = impuestos.map(str => { return str.split('*') .map(seg => parseInt(seg, 10)) .reduce((sum, cur) => sum * cur, 1) }) console.log(result) // 运行输出:[ 16612724250000000, 1563807613259996, 1449280809900000 ]
补充:控制台打印字符串时默认带引号是调试工具的类型区分设计,不是字符串本身包含引号。如果需要输出无引号的纯文本,直接遍历打印单个元素,或者用
join拼接成字符串后打印即可。
内容的提问来源于stack exchange,提问作者Luiz Villalba
相关产品推荐
相关产品推荐

