返回value1 - value2如何进行排序



如何返回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)返回一个负数,则ab之前。
  • 如果compareFunction(a, b)返回0,则它们相等,并且两个元素不移动。
  • 如果compareFunction(a, b)返回正数,则ba之前。

在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就是这样做的。

最新更新