You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将货币值列表按整数排序?对象价格排序的类型转换问题

解决带$符号价格的对象排序问题

这个坑我踩过!你说得没错,直接排序字符串格式的价格会按字典序来,所以"$12"会排在"$3"前面——因为字符串比较是逐个字符比的,第二个字符"1"比"3"小嘛。

核心思路就是把价格字符串转换成数字,用数字作为排序的依据就行,下面给你两种常见语言的实现:

JavaScript 实现

假设你有一个对象数组,直接用sort()方法配合自定义比较函数:

// 示例对象数组
const items = [
  { price: "$1", title: "Item A", city: "New York" },
  { price: "$3", title: "Item B", city: "Los Angeles" },
  { price: "$22", title: "Item C", city: "Chicago" },
  { price: "$12", title: "Item D", city: "Houston" }
];

// 按价格升序排序
const sortedByPrice = items.sort((a, b) => {
  // 去掉$符号,转成整数
  const numA = parseInt(a.price.replace("$", ""), 10);
  const numB = parseInt(b.price.replace("$", ""), 10);
  // 升序返回 numA - numB,降序就反过来写 numB - numA
  return numA - numB;
});

console.log(sortedByPrice);
// 输出结果就是按$1、$3、$12、$22排序的对象数组

Python 实现

Python里用sorted()函数的key参数更简洁:

# 示例对象列表
items = [
    {"price": "$1", "title": "Item A", "city": "New York"},
    {"price": "$3", "title": "Item B", "city": "Los Angeles"},
    {"price": "$22", "title": "Item C", "city": "Chicago"},
    {"price": "$12", "title": "Item D", "city": "Houston"}
]

# 按价格升序排序,key是转换后的数字
sorted_items = sorted(items, key=lambda item: int(item["price"].lstrip("$")))

print(sorted_items)
# 同样会得到你想要的排序结果

小提示

如果你的价格里有小数(比如"$19.99"),记得把parseInt换成parseFloat(JS),int换成float(Python),这样排序就不会丢失小数精度啦!

内容的提问来源于stack exchange,提问作者Zevvysan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 09:05:39