如何从混合文本中过滤提取不带$符号的纯价格数值
问题分析
你的原有代码逻辑是直接删除所有$和|符号后将全部内容拼接为单条字符串,最终无法得到独立的价格数值,也没办法后续计算平均值。
正确实现代码
// 原始数据字符串 const data = `$11.78 | Tue Sep 07 2021 14:57:34 GMT-0500 (Central Daylight Time) $10.63 | Tue Sep 07 2021 14:58:19 GMT-0500 (Central Daylight Time) $9.69 | Tue Sep 07 2021 14:59:20 GMT-0500 (Central Daylight Time) $9.68 | Tue Sep 07 2021 14:59:35 GMT-0500 (Central Daylight Time) $11.21 | Tue Sep 07 2021 15:00:36 GMT-0500 (Central Daylight Time) $9.51 | Tue Sep 07 2021 15:01:07 GMT-0500 (Central Daylight Time)`; // 提取纯数字价格数组 const priceList = data.split('\n') // 先按行拆分每条数据 .map(line => { const pricePart = line.split('|')[0].trim(); // 取|前面的价格段,去掉前后空格 return Number(pricePart.replace('$', '')); // 去掉$转成数字 }) .filter(price => !isNaN(price)); // 过滤掉异常无效值 // 计算平均值 const averagePrice = priceList.reduce((sum, curr) => sum + curr, 0) / priceList.length;
运行结果
- 提取得到的价格数组:
[11.78, 10.63, 9.69, 9.68, 11.21, 9.51] - 计算得到的平均值:保留两位小数约为10.42
内容的提问来源于stack exchange,提问作者Fisheiyy
相关产品推荐
相关产品推荐

