Javascript Bubblesort闭包

时间:2018-07-15 16:31:18

标签: javascript closures bubble-sort

我的一个程序遇到问题,似乎无法找出问题所在。基本上,我正在寻找一个数组,每个元素上存储着多种数据类型。我想创建一个可以通过Bubblesort排序的函数,该函数根据我要排序的内容将另一个比较函数作为参数。

function Autos(year) {
  this.year = year;
}

var autos = [
  new Autos(1995),
  new Autos(1990),
  new Autos(2000),
  new Autos(2010),
  new Autos(2005),
  new Autos(2008)
];


function Sorty(sortingMethod, array) {
  for (let i = 0; i < array.length; i++) {
    for (let j = 0; j < (array.length - i - 1); j++) {
      if (0 == sortingMethod(array[j], array[j + 1]));
      //	if(array[j].year < array[j+1].year)  //Sort works using this
      {
        let temp = array[j];
        array[j] = array[j + 1];
        array[j + 1] = temp;
      }
    }
  }
  console.log(array[0].year, array[1].year, array[2].year, array[3].year, array[4].year, array[5].year);
}

function sortByYear(x, y) {
  if (x.year < y.year) {
    return 0;
  } else {
    return 1;
  }
}

Sorty(sortByYear, autos);

如果我不使用其他排序功能进行排序,则排序符合预期。但是,当我使用排序功能时,数据不整齐。我怀疑这可能是关闭问题,但是我对该主题不满意。任何输入将不胜感激。

具有排序功能的结果是:

2008 2005 2010 2000 1990 1995

没有排序功能,结果是:

2010 2008 2005 2000 1995 1990

1 个答案:

答案 0 :(得分:0)

那是; if语句上的错字。谢谢