javascript - 对象数组不按属性排序
问题描述
我正在尝试按属性对一组对象进行排序。我找不到我在哪里犯错,但它根本没有排序。请你帮助我好吗 。在这里检查我的沙箱: https ://codesandbox.io/s/pedantic-villani-361wh
const data = [{
key: 33049999926180,
sn: 33049999926180
},
{
key: 33050000960170,
sn: 33050000960170
},
{
key: 33050001827158,
sn: 33050001827158
},
{
key: 33050002745147,
sn: 33050002745147
},
{
key: 33052513640473,
sn: 33052513640473
}
];
const handleClick = (data) => {
let temp = data;
temp.sort((a, b) => (a.sn < b.sn ? -1 : a.sn > b.sn ? 1 : 0));
console.log(temp); // check console
};
handleClick(data)
解决方案
您应该使用-
而不是<
在MDN上记录的原因
要比较数字而不是字符串,比较函数可以简单地从 a 中减去 b
这应该足够了:
const data = [
{
key: 33049999926180,
sn: 33049999926180
},
{
key: 33050000960170,
sn: 33050000960170
},
{
key: 33050001827158,
sn: 33050001827158
},
{
key: 33050002745147,
sn: 33050002745147
},
{
key: 33052513640473,
sn: 33052513640473
}
];
const handleClick = data => [...data].sort((a, b) => b.sn - a.sn);
const sortedData = handleClick(data);
console.log(sortedData);
推荐阅读
- mysql - 使用 DENSE_RANK() MySQL 缺少右括号
- postgresql - Asp Net Boilerplate - 设置 Schema-Per-Tenant Multitenancy (EntityFrameworkCore & PostgreSQL)
- c# - SerialDataReceivedEventHandler 不工作 c#
- java - 警报管理器未设置特定日期或超过 24 小时的警报
- python - Python并发日志记录以避免代码中的磁盘瓶颈
- apache-spark - 当数据帧按单列分区时,高效的 Spark 在多列上左连接
- python - Postman、Python 以及将图像和元数据传递给 Web 服务
- python - 未找到“”的反向。'' 不是有效的视图函数或模式名称
- c++ - 堆栈上的 C++ 变量似乎没有在函数范围结束时被释放
- mysql - laravel 搜索结果分组