arrays - 无法在反应中正确排序数组
问题描述
我创建了这个函数来对我的数据进行排序array
,当我按 ID 对其进行排序时,它工作得很好,但是当我尝试按名称对其进行排序时,什么也没有发生。
任何人都可以帮助解决这个问题?谢谢之前
const sortData = (params) => {
if (params === "id-asc") {
array.sort((a, b) => {
return a.id - b.id;
});
}
if (params === "id-des") {
array.sort((a, b) => {
return b.id - a.id;
});
}
if (params === "name-asc") {
array.sort((a, b) => {
return a.name - b.name;
});
}
if (params === "name-des") {
array.sort((a, b) => {
return b.name - a.name;
});
}
setArrayData(array);
};
解决方案
假设name
s 是字符串,您不能只通过减法来比较它们。
取而代之的是return (a.name < b.name ? -1 : 1);
,或者,也许最好使用localeCompare
,所以return a.name.localeCompare(b.name);
推荐阅读
- gnu - GNU radio Stick 是否在硬件级别具有内置的高通滤波器,还是在设计模块时实现?
- python-sphinx - 版本替换在子文档中不起作用
- java - 如何使用 Selenium 向下滚动?
- ruby-on-rails - Rails 5 - 我可以在控制台中输入 ActiveRecord 代码来检查记录吗?
- oracle - PL/SQL Developer - ORA-28041 身份验证协议内部错误
- javascript - 是否可以编写一段将在 prod 版本中省略的代码
- angular - Angular-Testing:Angular5 spyOn 在子组件中不起作用
- python - Keras LSTM 用于连续输入和连续输出
- cardano - 卡尔达诺节点你好世界
- swift - 当应用程序被杀死时从 Sinch 获取通知