如何返回value1 - value2
最终排序,而不是返回整数值,这将是两个数学减法的结果?
var values = [ 213, 16, 2058, 54, 10];
values.sort(function(value1,value2){ return value1 - value2});
.sort()
方法接受一个函数,该函数接受两个参数(两个元素),并返回一个数字来确定哪个元素应该先出现。如果数字为负,则value2
较大。如果数字为正,则value1
较大。如果数字等于0
,则两个元素的大小相同,它们的顺序无关。
因此,返回value1 - value2
只在这种情况下有效,因为您的元素是数字。如果它们是别的东西,你就必须使用一些更复杂的逻辑
语法:[1,2,3].sort(compareFunction)
, compareFunction
一次调用数组中的两个元素。
- 如果
compareFunction(a, b)
返回一个负数,则a
在b
之前。 - 如果
compareFunction(a, b)
返回0
,则它们相等,并且两个元素不移动。 - 如果
compareFunction(a, b)
返回正数,则b
在a
之前。
在MDN查看更多示例和详细文档:
Array.prototype.sort
: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
value1 - value2
不是做排序的东西。sort
。然而,sort
接受一个比较器形参:如果两个参数中的第一个较小,则该函数应该返回负数,如果它们相等,则返回0
,如果两个参数中的第一个较大,则返回正数;对于数字元素,value1 - value2
就是这样做的。