小白不太懂,请问为何x>y 返回1 就是从小到大排序。 而x>y 返回-1 就是从小到大排序。
在JavaScript中,数组的排序是基于对象的值的。数组的索引表示对象的属性名,因此,如果两个元素的值相同,那么它们的索引就相同。在这种情况下,如果你想要根据索引进行排序,你需要使用一个自定义的比较函数。
以下是一个示例,展示了如何使用比较函数对数组进行排序:
```javascript let array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
array.sort(function(a, b) { return a - b; });
console.log(array); // 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] ```
在这个例子中,我们使用了一个比较函数function(a, b) { return a - b; }
,它比较两个元素的值。如果两个元素的值相同,那么a - b
就会返回0,从而决定排序的顺序。
如果你想要根据另一个属性进行排序,你可以修改比较函数,使其接受这个属性作为参数。例如,如果你想根据数组中的第一个元素的值进行排序,你可以这样做:
```javascript let array = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
array.sort(function(a, b) { return a - b[0]; });
console.log(array); // 输出:[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9] ```
在这个例子中,我们使用了一个比较函数function(a, b) { return a - b[0]; }
,它比较两个元素的第一个值。如果两个元素的第一个值相同,那么a - b[0]
就会返回0,从而决定排序的顺序。