js价格排序实现
价格排序实现方法
在JavaScript中实现价格排序通常涉及对数组对象的特定属性(如price)进行排序。以下是几种常见的方法:
使用Array.prototype.sort()
对包含价格的对象数组进行升序或降序排列:

const products = [
{ name: 'Product A', price: 99 },
{ name: 'Product B', price: 199 },
{ name: 'Product C', price: 59 }
];
// 升序排序(低到高)
products.sort((a, b) => a.price - b.price);
// 降序排序(高到低)
products.sort((a, b) => b.price - a.price);
处理字符串类型的价格
如果价格是字符串格式(如"$99.99"),需先转换为数字:

const products = [
{ name: 'Product A', price: '$99.99' },
{ name: 'Product B', price: '$199.99' }
];
products.sort((a, b) =>
parseFloat(a.price.replace(/[^0-9.-]/g, '')) -
parseFloat(b.price.replace(/[^0-9.-]/g, ''))
);
动态排序函数
创建可复用的排序函数,支持指定排序键和方向:
function sortByPrice(items, key = 'price', order = 'asc') {
return items.sort((a, b) =>
order === 'asc' ? a[key] - b[key] : b[key] - a[key]
);
}
考虑性能的大数组排序
对于超过10万条数据时,考虑使用TypedArray优化:
// 将价格提取为Float64Array进行快速排序
const prices = Float64Array.from(products.map(p => p.price));
prices.sort();
注意事项
- 原始数组会被修改,如需保留原数组需先拷贝:
const sorted = [...products].sort((a,b) => a.price - b.price); - 处理浮点数时注意精度问题,建议使用
toFixed(2)等方法统一格式






