当前位置:首页 > JavaScript

js价格排序实现

2026-04-04 05:08:49JavaScript

数组排序(升序/降序)

使用 Array.prototype.sort() 方法对数字数组进行排序。默认情况下,sort() 会将元素转换为字符串并按 Unicode 码点排序,因此需要自定义比较函数。

升序排序:

const prices = [99, 29, 159, 199, 49];
prices.sort((a, b) => a - b);
// 结果: [29, 49, 99, 159, 199]

降序排序:

prices.sort((a, b) => b - a);
// 结果: [199, 159, 99, 49, 29]

对象数组按价格排序

对包含价格属性的对象数组排序时,需在比较函数中指定属性名。

js价格排序实现

升序:

const products = [
  { name: 'Laptop', price: 999 },
  { name: 'Mouse', price: 49 },
  { name: 'Keyboard', price: 79 }
];
products.sort((a, b) => a.price - b.price);

降序:

products.sort((a, b) => b.price - a.price);

处理浮点数精度

当价格包含小数时,直接相减可能导致精度问题。建议使用 toFixed() 转换后再比较:

js价格排序实现

const floatPrices = [10.99, 2.50, 5.01];
floatPrices.sort((a, b) => parseFloat(a.toFixed(2)) - parseFloat(b.toFixed(2)));

带货币符号的字符串排序

若价格为字符串形式(如 "$29.99"),需先提取数值部分:

const currencyPrices = ["$29.99", "$9.99", "$199.99"];
currencyPrices.sort((a, b) => 
  parseFloat(a.replace(/[^0-9.]/g, '')) - 
  parseFloat(b.replace(/[^0-9.]/g, ''))
);

多条件排序

当价格相同时,可添加次要排序条件(如按名称字母序):

products.sort((a, b) => {
  if (a.price === b.price) {
    return a.name.localeCompare(b.name);
  }
  return a.price - b.price;
});

性能优化

对大规模数据排序时,考虑使用 TypedArray 提高性能:

const largeArray = new Float64Array([99.5, 23.1, 42.8]);
largeArray.sort((a, b) => a - b);

标签: 价格js
分享给朋友:

相关文章

js实现抽奖

js实现抽奖

实现抽奖功能的基本思路 抽奖功能的核心是随机选择奖项并展示结果。可以通过数组存储奖项,利用随机数生成索引,最后通过动画增强用户体验。 准备奖项数据 定义一个数组存储奖项信息,每个奖项可以包含名称、图…

vue 实现阶梯价格

vue 实现阶梯价格

实现阶梯价格的核心思路 阶梯价格通常指根据购买数量或金额的不同区间设定不同的单价。Vue中可以通过计算属性或方法动态计算价格,结合表单输入或选择器实现交互。 基础数据模型设计 定义阶梯价格规则数组,…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的J…

js实现上传文件

js实现上传文件

文件上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API可以实现文件上传功能。 <input type="file"…