JavaScript使用.map()对数组元素排序时的奇怪行为

JavaScript使用.map()对数组元素排序时的奇怪行为,javascript,reactjs,sorting,react-hooks,Javascript,Reactjs,Sorting,React Hooks,我使用这个代码: const sortedPlayers = props.scorer.sort((a, b) => { if (a.nummer > b.nummer) { return 1; } if (a.nummer < b.nummer) { return -1; } return 0; }); {sortedPlayers.map((player) => {})} 你能解释一下这个谜吗 提前谢谢 /

我使用这个代码:

const sortedPlayers = props.scorer.sort((a, b) => {
  if (a.nummer > b.nummer) {
    return 1;
  }
  if (a.nummer < b.nummer) {
    return -1;
  }
  return 0;
});
  
         {sortedPlayers.map((player) => {})}
你能解释一下这个谜吗

提前谢谢
/Peter

排序方法将排序到位。换句话说,它会对调用该方法的数组进行变异

通常,您不希望在React中传递组件时使用变异道具,因此(可能)最好在排序之前制作数组的浅层副本:

const sortedPlayers=[…props.scorer].sort((a,b)=>{
如果(a.numer>b.numer){
返回1;
}
if(a.numer{…});

Array.prototype.sort
就地排序,这意味着它会对数组进行变异。
sort
方法就地排序。换句话说,它会对调用该方法的数组进行变异。通常,您不希望对在react中传递组件的道具执行此操作,因此(可能)最好是创建数组的浅层副本
const sortedPlayers=[…props.scorer]。sort(…)
感谢您的回复ASDFGerte&Nick:)没有考虑到这一点。sort()为回复尼克修改数组库!没有想到,
.sort()
会使array@lelkes代码运行时间太长,只有一个数字。但它对两个或多个数字的排序不正确。例如:数字15在1和2之间排序,111在1和15之间排序,我尝试了
let keyA=parseInt(a.text(),100);设keyB=parseInt(b.text(),100);返回keyA-keyB但是get:“TypeError:a.text不是函数
const sortedPlayers = props.scorer.sort((a, b) => {}
{props.scorer.map((player) => {})}