【发布时间】:2021-05-21 11:52:00
【问题描述】:
我不相信这是复制品 How does Javascript's sort() work?
let arr = [3, 4, 2, 1];
arr.sort((second,first) => {
console.log([first, second]);
if (first>second) {
return -1; // switch them
}
return 0; // don't switch them
});
console.log(arr);
返回
[ 3, 4 ]
[ 4, 2 ]
[ 4, 2 ] <---- Why is this output twice?
[ 3, 2 ]
[ 3, 1 ]
[ 2, 1 ]
[ 1, 2, 3, 4 ]
我想弄清楚 NodeJS (14.4.0) 在我的输入中对 Array.sort 使用什么算法?
【问题讨论】:
-
您的排序回调可能会导致结果不一致,因为您在
second > first时返回0。尝试添加else if (second > first) { return 1 }。 -
另外,将第一个参数命名为
second,将第二个参数命名为first,这完全是邪恶的。我想知道为什么sort的工作方式错误:) -
@adiga 我认为这是因为数组中项目的顺序。原来不是我的代码:)
标签: javascript node.js sorting