首页 > 解决方案 > 对象数组不按属性排序

问题描述

我正在尝试按属性对一组对象进行排序。我找不到我在哪里犯错,但它根本没有排序。请你帮助我好吗 。在这里检查我的沙箱: 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)

标签: javascriptreactjssorting

解决方案


您应该使用-而不是<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);

推荐阅读