5
回答
return反回的值是如何产生作用的
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

下面代码中是一个比较数组然后排序的功能,

我搞不明白的是为啥返回的-1 、1、0是咋起作用的呢?

因为机器当比较两个值比如说返回的值是1,难道它就知道哪个排在前面吗?

代码如下

var arr2 = [10,2,4,1,7];
				function compare(value1 , value2){
					if(value1 < value2){
						return -1 ;
					} else if(value1 > value2){
						return 1 ; 
					} else {
						return 0 ;
					}
				}
				arr2.sort(compare);
				alert(arr2);



举报
lghyt
发帖于1年前 5回/217阅
共有5个答案 最后回答: 1年前
Array.prototype.sort = function (compare) {
  var i = 0;
  var len = this.length;
  while (i < len) {
    var j = i + 1;
    while (j < len) {
      var curr = this[i];
      var next = this[j];
      if (compare(curr, next) === 1) {
        this[i] = next;
        this[j] = curr;
      } else if (compare(curr, next) === -1) {
        
      } else if (compare(curr, next) === 0) {

      }
      j++;
    }
    i++;
  }
};



--- 共有 1 条评论 ---
lghyt原来是这么回事,受教了 1年前 回复

sort指定了排序的方式,compare制定了比较的方式,如果你对比的两个对象不是普通的数字,那么compare就比较有用了,比如一个数组,[{age:13, id:2}, {age:12, id:1}, {age:11, id:3}],这样的话用自定义比较函数,可以根据age排序,也可以根据id排序。下面是一个简单的冒泡的例子,你可以看到sort是如何运用compare的。

var a = [5,2,4,3,1];

function bubbleSort(a, cmp)
{
    var swapped;
    do {
        swapped = false;
        for (var i=0; i < a.length-1; i++) {
            if (cmp(a[i], a[i+1]) > 0) {
                var temp = a[i];
                a[i] = a[i+1];
                a[i+1] = temp;
                swapped = true;
            }
        }
    } while (swapped);
}

function compare(value1 , value2){
    if(value1 < value2){
        return -1 ;
    } else if(value1 > value2){
        return 1 ; 
    } else {
        return 0 ;
    }
}

bubbleSort(a, compare);



基本上就是这个意思

顶部