首页 > 解决方案 > 无法在反应中正确排序数组

问题描述

我创建了这个函数来对我的数据进行排序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);
  };

标签: arraysreactjssorting

解决方案


假设names 是字符串,您不能只通过减法来比较它们。

取而代之的是return (a.name < b.name ? -1 : 1);,或者,也许最好使用localeCompare,所以return a.name.localeCompare(b.name);


推荐阅读