如何从API返回的字符串数组提取价格并按升序排序?
最优实现方案:提取汽车价格并排序
实现步骤与代码
直接通过原生数组方法结合正则表达式完成,兼顾性能与可读性:
let luxcar_data = ["Ferrari70", "Bugatti45", "McLaren17", "Lamborghini41", "Rolls52", "Aston30", "Koenigsegg19", "Pagani28", "Lamborghini36"]; // 转换并提取数据 const processedCars = luxcar_data.map(car => { const [_, name, priceStr] = car.match(/([A-Za-z]+)(\d+)/); return { name, price: Number(priceStr) }; }); // 按价格升序排序 const sortedCars = processedCars.sort((a, b) => a.price - b.price); console.log(sortedCars);
关键细节说明
- 正则拆分:用
/([A-Za-z]+)(\d+)/精准匹配品牌名(连续英文字母)和价格(连续数字),通过解构赋值快速获取分组结果。 - 类型转换:将价格字符串转为数字类型,避免字符串排序时出现
"17">"70"的逻辑错误。 - 高效排序:原生
sort方法针对数组排序做了性能优化,通过a.price - b.price实现升序排列,逻辑清晰直接。
异常处理(可选)
如果API返回数据存在格式异常项,可添加过滤逻辑确保结果有效性:
const processedCars = luxcar_data.map(car => { const match = car.match(/([A-Za-z]+)(\d+)/); if (!match) return null; const [_, name, priceStr] = match; return { name, price: Number(priceStr) }; }).filter(Boolean); // 过滤null/undefined无效项
内容的提问来源于stack exchange,提问作者ミツオ
相关产品推荐
相关产品推荐

