【发布时间】:2022-01-17 13:44:04
【问题描述】:
所以我创建了两个对象:
var obj1 = {
"id" : 123,
"name" : "Hello"
}
var obj2 = {
"id" : 456,
"name" : "Goodbye"
}
然后我将它们插入到一个数组中:
var arr = [obj1, obj2];
然后我将排序结果存储到一个变量中并记录到控制台:
var test = arr.sort(function(x, y) {
console.log("x ", x)
console.log("y ", y)
});
console.log(test);
结果是:
x {id: 456, name: 'Goodbye'}
y {id: 123, name: 'Hello'}
我希望顺序与数组中对象的出现相同,因为我没有定义任何排序标准。为什么是这样的顺序?
【问题讨论】:
-
“为什么是这样的顺序?”为什么顺序很重要?
-
@VLAZ 我期待参数“x”对应于数组元素 0,参数“y”对应于数组元素 1。顺序并不“重要”我只是想理解为什么它们不对应。
-
因为您环境中的排序算法决定按该顺序选取元素。
-
语言标准不支持某种排序算法,只是从排序函数中返回一个值,表示两个项目的所需顺序。更多在这里 ->
Array#sort -
据我了解,.sort() 中使用的排序算法取决于数据,它选择“最佳”算法,可能是冒泡排序、快速排序、选择排序或诸如此类。我不确定 .sort() 在什么时间选择哪一个(我知道这无关紧要),但不同的算法会以不同的顺序选择项目。
标签: javascript arrays sorting