javascript - 我做了一个简单的排序功能,但它不起作用
问题描述
我做了一个简单的排序函数,但由于某种原因它仍然返回原始列表。
function sortByPopular (item) {
let items_sold = item.slice();
items_sold.sort(function(a,b) {
return a.quantity_sold > b.quantity_sold;
});
loadPopularItems("popular-items", items_sold); //this sends it to the html
}
解决方案
回调函数需要返回一个区分三种状态的数字,而不是布尔值:
- 如果两个元素排序相等,则返回 0
- 如果 a 应该在 b之前排序,则返回任何小于0的数字
- 如果 a 应该在b 之后排序,则返回任何大于0的数字
如果 quantity_sold 属性是一个数字,您可以简单地执行此操作:return a.quantity_sold - b.quantity_sold;
如果不是数字,则需要适当的 if 语句:
if ( a.quantity_sold > b.quantity_sold ) {
return -1;
}
elseif ( a.quantity_sold < b.quantity_sold ) {
return 1;
}
else {
return 0;
}
推荐阅读
- android - ADB 无法连接到守护进程
- tensorflow - 如何安装tensorflow==2.3.0
- python - 如何使用循环来调整路径名
- reactive-programming - Spring WebFlux如何合并Mono Objects的结果?
- java - 如何在 libgdx 中创建非常简单的暂停/恢复游戏
- google-maps - 在生产环境中启用 google maps api key
- angular - Stencil 全局样式在发布包并在 Angular 中使用后未应用
- react-native - useEffect 和 useState 未在 fetch 中设置值
- android - 在视图寻呼机 2 中禁用垂直滚动
- excel - 通过 PowerShell 将 .odc 文件导入 Excel